在使用Rails发送的电子邮件的主题中= 0A?

时间:2014-04-03 09:56:36

标签: ruby-on-rails ruby ruby-on-rails-4

我在user_mailer.rb

中有这个
class UserMailer < ActionMailer::Base
  default from: ["no-reply@#{CONFIG[:domain]}"]

  def password_reset(user, portal_name)
    @user = user
    mail to: @user.email, subject: t('emails.password_reset.subject')
  end
end

我的yml翻译文件中有这个:

emails:
  password_reset:
    subject: You've requested to reset your password

翻译字符串末尾没有字符,但是当发送电子邮件时,主题在电子邮件中显示如下:“您已请求重置密码= 0A”

我试过寻找答案,我发现Rails过去常常有一个ActionMailer :: Quoting.quoted_printable方法,但似乎在rails 4中不再存在。

“= 0A”来自哪里?在rails中有任何内置的解决方案吗?

2 个答案:

答案 0 :(得分:0)

我设法通过在最后添加一个chomp来解决问题:

mail to: user.email, subject: t('emails.password_reset.subject').chomp

似乎在某个地方引入了换行符!

答案 1 :(得分:0)

使用&#39; X-SMTPAPI&#39;时,我也遇到了这个问题。标头(SendCloud邮件服务)。这是因为Mail gem将处理标头:

def encode_crlf(value)
  value.gsub!(CR, CR_ENCODED)
  value.gsub!(LF, LF_ENCODED)
  value
end

当我尝试仅使用Mail gem时,它有效。我认为这是因为charset与Rails&#39;默认设置。我解决了这个问题:

headers["X-SMTPAPI"] = Base64.encode64(JSON.dump({"to" => emails, "sub" => {"%name%" => names}})).gsub!(/\n/,'')