diaspora/app/mailers/notifier.rb
Steven Hancock 56db268613 Use markerb for emails
* Add markerb to the Gemfile
* Update mailer classes to send multipart text+html emails
* Simplify all email templates and convert to Markdown+ERB

This required stripping the CSS and images from the emails. All
Markdown templates are based on the original HTML version except
for the inviter, where it was much easier to work with the text
version (and the i18n contains the whole message anyway).
2012-05-07 19:41:30 -07:00

104 lines
2.7 KiB
Ruby

class Notifier < ActionMailer::Base
helper :application
helper :markdownify
helper :notifier
helper :people
def self.admin(string, recipients, opts = {})
mails = []
recipients.each do |rec|
mail = single_admin(string, rec, opts.dup)
mails << mail
end
mails
end
def single_admin(string, recipient, opts={})
@receiver = recipient
@string = string.html_safe
if attach = opts.delete(:attachments)
attach.each{ |f|
attachments[f[:name]] = f[:file]
}
end
default_opts = {:to => @receiver.email,
:from => AppConfig[:smtp_sender_address],
:subject => I18n.t('notifier.single_admin.subject'), :host => AppConfig[:pod_uri].host}
default_opts.merge!(opts)
mail(default_opts) do |format|
format.text
format.html
end
end
def invite(email, message, inviter, invitation_code, locale)
@inviter = inviter
@message = message
@locale = locale
@invitation_code = invitation_code
mail_opts = {:to => email, :from => AppConfig[:smtp_sender_address],
:subject => I18n.t('notifier.invited_you', :name => @inviter.person.name),
:host => AppConfig[:pod_uri].host}
I18n.with_locale(locale) do
mail(mail_opts) do |format|
forat.text
forat.html
end
end
end
def started_sharing(recipient_id, sender_id)
send_notification(:started_sharing, recipient_id, sender_id)
end
def liked(recipient_id, sender_id, like_id)
send_notification(:liked, recipient_id, sender_id, like_id)
end
def reshared(recipient_id, sender_id, reshare_id)
send_notification(:reshared, recipient_id, sender_id, reshare_id)
end
def mentioned(recipient_id, sender_id, target_id)
send_notification(:mentioned, recipient_id, sender_id, target_id)
end
def comment_on_post(recipient_id, sender_id, comment_id)
send_notification(:comment_on_post, recipient_id, sender_id, comment_id)
end
def also_commented(recipient_id, sender_id, comment_id)
send_notification(:also_commented, recipient_id, sender_id, comment_id)
end
def private_message(recipient_id, sender_id, message_id)
send_notification(:private_message, recipient_id, sender_id, message_id)
end
def confirm_email(recipient_id)
send_notification(:confirm_email, recipient_id)
end
private
def send_notification(type, *args)
@notification = NotificationMailers.const_get(type.to_s.camelize).new(*args)
with_recipient_locale do
mail(@notification.headers) do |format|
format.text
format.html
end
end
end
def with_recipient_locale(&block)
I18n.with_locale(@notification.recipient.language, &block)
end
end