module MailReceiver::ReplyTo

Public Instance Methods

mail_answer_thread(model, headers = {}, &block) click to toggle source
# File lib/mail-receiver/reply_to.rb, line 13
def mail_answer_thread(model, headers = {}, &block)
  if headers[:subject]
    headers[:subject].prepend('Re: ')
  end

  # Mail receiver
  headers[:reply_to] = reply_to_address(model)

  mail(headers, &block)
end
mail_new_thread(model, headers = {}, &block) click to toggle source
# File lib/mail-receiver/reply_to.rb, line 6
def mail_new_thread(model, headers = {}, &block)
  # Mail receiver
  headers[:reply_to] = reply_to_address(model)

  mail(headers, &block)
end

Protected Instance Methods

convert_able(model) click to toggle source
# File lib/mail-receiver/reply_to.rb, line 42
def convert_able(model)
  if %W(Issue MergeRequest).index(model.class.name) == -1
    return nil
  end

  res = { id: model.iid }
  if defined?(@note)
    # gitlab/app/mailers/emails/notes.rb 里面会声明 @note
    res.merge!({ n: @note.id })
  end

  if model.class.name == 'Issue'
    res.merge!({ t: 'i' })
    return res
  end

  if model.class.name == 'MergeRequest'
    res.merge!({ t: 'm' })
    return res
  end

  return nil
end
default_email_reply_to() click to toggle source
# File lib/mail-receiver/reply_to.rb, line 38
def default_email_reply_to
  Gitlab.config.gitlab.email_reply_to
end
reply_to_address(model) click to toggle source
# File lib/mail-receiver/reply_to.rb, line 25
def reply_to_address(model)
  hash = convert_able(model)
  return default_email_reply_to if hash.blank?
  return default_email_reply_to if @project.blank?


  hash.merge!({ p: @project.path_with_namespace })

  suffix = Encoder.encode(hash)

  Mailman.config.sender.sub('@', "+#{suffix}@")
end