diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-08-19 12:35:08 -0700 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-08-19 12:35:08 -0700 |
commit | a8a861ae2a122b310d1aca6f9f9b1d0601b8c49f (patch) | |
tree | 0ac781a4036e8ca65d5f697c7a30f910db7ddd25 /app | |
parent | 03b54f1f0324c4d424d66e4bf36e42c2a88fc26d (diff) | |
download | gitlab-ce-a8a861ae2a122b310d1aca6f9f9b1d0601b8c49f.tar.gz |
Add BaseMailer to house shared mailer functionality.
Diffstat (limited to 'app')
-rw-r--r-- | app/mailers/base_mailer.rb | 50 | ||||
-rw-r--r-- | app/mailers/email_rejection_mailer.rb | 18 | ||||
-rw-r--r-- | app/mailers/notify.rb | 33 |
3 files changed, 52 insertions, 49 deletions
diff --git a/app/mailers/base_mailer.rb b/app/mailers/base_mailer.rb new file mode 100644 index 00000000000..38b8a296842 --- /dev/null +++ b/app/mailers/base_mailer.rb @@ -0,0 +1,50 @@ +class EmailRejectionMailer < ActionMailer::Base + add_template_helper ApplicationHelper + add_template_helper GitlabMarkdownHelper + + attr_accessor :current_user + helper_method :current_user, :can? + + default from: Proc.new { default_sender_address.format } + default reply_to: Proc.new { default_reply_to_address.format } + + def self.delay + delay_for(2.seconds) + end + + def rejection(reason, original_raw, can_retry = false) + @reason = reason + @original_message = Mail::Message.new(original_raw) + + headers = { + to: @original_message.from, + subject: "[Rejected] #{@original_message.subject}" + } + + headers['Message-ID'] = SecureRandom.hex + headers['In-Reply-To'] = @original_message.message_id + headers['References'] = @original_message.message_id + + headers['Reply-To'] = @original_message.to.first if can_retry + + mail(headers) + end + + def can? + Ability.abilities.allowed?(user, action, subject) + end + + private + + def default_sender_address + address = Mail::Address.new(Gitlab.config.gitlab.email_from) + address.display_name = Gitlab.config.gitlab.email_display_name + address + end + + def default_reply_to_address + address = Mail::Address.new(Gitlab.config.gitlab.email_reply_to) + address.display_name = Gitlab.config.gitlab.email_display_name + address + end +end diff --git a/app/mailers/email_rejection_mailer.rb b/app/mailers/email_rejection_mailer.rb index f29c4e052fc..89aceda82d1 100644 --- a/app/mailers/email_rejection_mailer.rb +++ b/app/mailers/email_rejection_mailer.rb @@ -1,12 +1,4 @@ -class EmailRejectionMailer < ActionMailer::Base - add_template_helper ApplicationHelper - add_template_helper GitlabMarkdownHelper - - helper_method :current_user, :can? - - default from: "#{Gitlab.config.gitlab.email_display_name} <#{Gitlab.config.gitlab.email_from}>" - default reply_to: "#{Gitlab.config.gitlab.email_display_name} <#{Gitlab.config.gitlab.email_reply_to}>" - +class EmailRejectionMailer < BaseMailer def rejection(reason, original_raw, can_retry = false) @reason = reason @original_message = Mail::Message.new(original_raw) @@ -24,12 +16,4 @@ class EmailRejectionMailer < ActionMailer::Base mail(headers) end - - def current_user - nil - end - - def can? - false - end end diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb index b4c83f8c5fc..1a2286f9d47 100644 --- a/app/mailers/notify.rb +++ b/app/mailers/notify.rb @@ -1,4 +1,4 @@ -class Notify < ActionMailer::Base +class Notify < BaseMailer include ActionDispatch::Routing::PolymorphicRoutes include Emails::Issues @@ -8,22 +8,9 @@ class Notify < ActionMailer::Base include Emails::Profile include Emails::Groups - add_template_helper ApplicationHelper - add_template_helper GitlabMarkdownHelper add_template_helper MergeRequestsHelper add_template_helper EmailsHelper - attr_accessor :current_user - helper_method :current_user, :can? - - default from: Proc.new { default_sender_address.format } - default reply_to: Proc.new { default_reply_to_address.format } - - # Just send email with 2 seconds delay - def self.delay - delay_for(2.seconds) - end - def test_email(recipient_email, subject, body) mail(to: recipient_email, subject: subject, @@ -69,20 +56,6 @@ class Notify < ActionMailer::Base private - # The default email address to send emails from - def default_sender_address - address = Mail::Address.new(Gitlab.config.gitlab.email_from) - address.display_name = Gitlab.config.gitlab.email_display_name - address - end - - # The default email address to send emails from - def default_reply_to_address - address = Mail::Address.new(Gitlab.config.gitlab.email_reply_to) - address.display_name = Gitlab.config.gitlab.email_display_name - address - end - def can_send_from_user_email?(sender) sender_domain = sender.email.split("@").last self.class.allowed_email_domains.include?(sender_domain) @@ -197,10 +170,6 @@ class Notify < ActionMailer::Base mail_thread(model, headers) end - def can? - Ability.abilities.allowed?(user, action, subject) - end - def reply_key @reply_key ||= Gitlab::ReplyByEmail.reply_key end |