diff options
Diffstat (limited to 'app/mailers/emails')
-rw-r--r-- | app/mailers/emails/imports.rb | 15 | ||||
-rw-r--r-- | app/mailers/emails/profile.rb | 5 | ||||
-rw-r--r-- | app/mailers/emails/service_desk.rb | 33 |
3 files changed, 50 insertions, 3 deletions
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 |