# # Send a publication email whenever an elt is saved # # Important: # the bcc, which is actually used for sending, is setup in the Mail class # class MailNotify < ActionMailer::Base def publish(elt) @subject = elt.subject # Try to render the element as html #@body = elt.body @body[:elt] = elt @recipients = (mailing_list(elt.parent).subject.blank? ? '' : mailing_list(elt.parent).subject ) \ + ' <' \ + mailing_list(elt.parent).id + '@' + ActionMailer::Base.server_settings[:domain] \ + '>' @from = ((elt.person and elt.person.name) ? elt.person.name : ANONYMOUS_POSTER) \ + ' <' \ + ((elt.person and elt.person.email) \ ? elt.person.email : ANONYMOUS_POSTER + '@' + ActionMailer::Base.server_settings[:domain]) \ + '> ' # This is the essential of a mailing list, you reply to the mailing list, # where every body sends their mail. # This very mail can be a mailing list all by itself... @headers['Reply-to'] = mailing_list(elt).id + '@' + ActionMailer::Base.server_settings[:domain] @headers['In-Reply-To'] = elt.parent.mail.message if elt.parent \ and elt.parent.mail and elt.parent.mail.message @sent_on = elt.created_on parentMsg = elt.parent.mail if parentMsg @headers['references'] = '' @headers['references'] << parentMsg.mail_parents if parentMsg.mail_parents @headers['references'] << parentMsg.message if parentMsg.message end @content_type = 'multipart/alternative' @headers['X-Mailer'] = ActionMailer::Base.server_settings[:domain] + " v" + PARLEMENT_VERSION end private # # Try to fine, define, the mailing list id this elt is part of # # The algo used is simple: find a parent id smaller than the usually auto # generated ids # def mailing_list(elt) e = elt while e.id.size > 21 and e.parent_id != 'ROOT' e = e.parent end e end end