# File lib/puppet/reports/tagmail.rb, line 125
125:     def send(reports)
126:         pid = fork do
127:             if Puppet[:smtpserver] != "none"
128:                 begin
129:                     Net::SMTP.start(Puppet[:smtpserver]) do |smtp|
130:                         reports.each do |emails, messages|
131:                             smtp.open_message_stream(Puppet[:reportfrom], *emails) do |p|
132:                               p.puts "From: #{Puppet[:reportfrom]}"
133:                               p.puts "Subject: Puppet Report for %s" % self.host
134:                               p.puts "To: " + emails.join(", ")
135:                               p.puts "Date: " + Time.now.rfc2822
136:                               p.puts
137:                               p.puts messages
138:                             end
139:                         end
140:                     end
141:                 rescue => detail
142:                     if Puppet[:debug]
143:                         puts detail.backtrace
144:                     end
145:                     raise Puppet::Error,
146:                         "Could not send report emails through smtp: %s" % detail
147:                 end
148:             elsif Puppet[:sendmail] != ""
149:                 begin
150:                     reports.each do |emails, messages|
151:                         # We need to open a separate process for every set of email addresses
152:                         IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
153:                             p.puts "From: #{Puppet[:reportfrom]}"
154:                             p.puts "Subject: Puppet Report for %s" % self.host
155:                             p.puts "To: " + emails.join(", ")
156: 
157:                             p.puts messages
158:                         end
159:                     end
160:                 rescue => detail
161:                     if Puppet[:debug]
162:                         puts detail.backtrace
163:                     end
164:                     raise Puppet::Error,
165:                         "Could not send report emails via sendmail: %s" % detail
166:                 end
167:             else
168:                 raise Puppet::Error, "SMTP server is unset and could not find sendmail"
169:             end
170:         end
171: 
172:         # Don't bother waiting for the pid to return.
173:         Process.detach(pid)
174:     end