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