summaryrefslogtreecommitdiff
path: root/app/mailers
diff options
context:
space:
mode:
Diffstat (limited to 'app/mailers')
-rw-r--r--app/mailers/devise_mailer.rb5
-rw-r--r--app/mailers/emails/imports.rb15
-rw-r--r--app/mailers/emails/profile.rb5
-rw-r--r--app/mailers/emails/service_desk.rb33
-rw-r--r--app/mailers/notify.rb1
-rw-r--r--app/mailers/previews/notify_preview.rb4
6 files changed, 60 insertions, 3 deletions
diff --git a/app/mailers/devise_mailer.rb b/app/mailers/devise_mailer.rb
index 61a23520d54..7129e577cb8 100644
--- a/app/mailers/devise_mailer.rb
+++ b/app/mailers/devise_mailer.rb
@@ -17,6 +17,11 @@ class DeviseMailer < Devise::Mailer
devise_mail(record, :user_admin_approval, opts)
end
+ def reset_password_instructions(record, token, opts = {})
+ headers['X-Mailgun-Suppressions-Bypass'] = 'true'
+ super
+ end
+
protected
def subject_for(key)
diff --git a/app/mailers/emails/imports.rb b/app/mailers/emails/imports.rb
new file mode 100644
index 00000000000..d3e8b90d686
--- /dev/null
+++ b/app/mailers/emails/imports.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module Emails
+ module Imports
+ def github_gists_import_errors_email(user_id, errors)
+ @errors = errors
+ user = User.find(user_id)
+
+ email_with_layout(
+ to: user.notification_email_or_default,
+ subject: subject(s_('GithubImporter|GitHub Gists import finished with errors'))
+ )
+ end
+ end
+end
diff --git a/app/mailers/emails/profile.rb b/app/mailers/emails/profile.rb
index ede6007e0e2..5b1750400d8 100644
--- a/app/mailers/emails/profile.rb
+++ b/app/mailers/emails/profile.rb
@@ -83,14 +83,15 @@ module Emails
end
end
- def access_token_expired_email(user)
+ def access_token_expired_email(user, token_names = [])
return unless user && user.active?
@user = user
+ @token_names = token_names
@target_url = profile_personal_access_tokens_url
Gitlab::I18n.with_locale(@user.preferred_language) do
- mail_with_locale(to: @user.notification_email_or_default, subject: subject(_("Your personal access token has expired")))
+ mail_with_locale(to: @user.notification_email_or_default, subject: subject(_("Your personal access tokens have expired")))
end
end
diff --git a/app/mailers/emails/service_desk.rb b/app/mailers/emails/service_desk.rb
index 66eb2c646a9..2953ec6cbe5 100644
--- a/app/mailers/emails/service_desk.rb
+++ b/app/mailers/emails/service_desk.rb
@@ -5,6 +5,8 @@ module Emails
extend ActiveSupport::Concern
include MarkupHelper
+ EMAIL_ATTACHMENTS_SIZE_LIMIT = 10.megabytes.freeze
+
included do
layout 'service_desk', only: [:service_desk_thank_you_email, :service_desk_new_note_email]
end
@@ -28,6 +30,7 @@ module Emails
setup_service_desk_mail(issue_id)
email_sender = sender(@note.author_id)
+ add_uploads_as_attachments if Feature.enabled?(:service_desk_new_note_email_native_attachments, @note.project)
options = service_desk_options(email_sender, 'new_note', recipient)
.merge(subject: subject_base)
@@ -60,7 +63,8 @@ module Emails
template = Gitlab::Template::ServiceDeskTemplate.find(email_type, @project)
text = substitute_template_replacements(template.content)
- context = { project: @project, pipeline: :email }
+ context = { project: @project, pipeline: :service_desk_email, uploads_as_attachments: @uploads_as_attachments }
+
context[:author] = @note.author if email_type == 'new_note'
markdown(text, context)
@@ -90,5 +94,32 @@ module Emails
def subject_base
"#{@issue.title} (##{@issue.iid})"
end
+
+ def add_uploads_as_attachments
+ uploaders = find_uploaders_for(@note)
+ return unless uploaders.present?
+ return if uploaders.sum(&:size) > EMAIL_ATTACHMENTS_SIZE_LIMIT
+
+ @uploads_as_attachments = []
+ uploaders.each do |uploader|
+ attachments[uploader.filename] = uploader.read
+ @uploads_as_attachments << "#{uploader.secret}/#{uploader.filename}"
+ rescue StandardError => e
+ Gitlab::ErrorTracking.track_exception(e, project_id: @note.project.id)
+ end
+ end
+
+ def find_uploaders_for(note)
+ uploads = FileUploader::MARKDOWN_PATTERN.scan(note.note)
+ return unless uploads.present?
+
+ project = note.project
+ uploads.map do |secret, file_name|
+ UploaderFinder.new(project, secret, file_name).execute
+ end
+ rescue StandardError => e
+ Gitlab::ErrorTracking.track_exception(e, project_id: note.project.id)
+ nil
+ end
end
end
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index 5a3fc70832c..31726563662 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -24,6 +24,7 @@ class Notify < ApplicationMailer
include Emails::InProductMarketing
include Emails::AdminNotification
include Emails::IdentityVerification
+ include Emails::Imports
helper TimeboxesHelper
helper MergeRequestsHelper
diff --git a/app/mailers/previews/notify_preview.rb b/app/mailers/previews/notify_preview.rb
index 7d7e01950c8..7ed594bf571 100644
--- a/app/mailers/previews/notify_preview.rb
+++ b/app/mailers/previews/notify_preview.rb
@@ -225,6 +225,10 @@ class NotifyPreview < ActionMailer::Preview
Notify.project_was_moved_email(project.id, user.id, "gitlab/gitlab").message
end
+ def github_gists_import_errors_email
+ Notify.github_gists_import_errors_email(user.id, { '12345' => 'Snippet maximum file count exceeded', '67890' => 'error message 2' }).message
+ end
+
private
def project