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

Ruby on rails =0A,在使用Rails发送的电子邮件主题中?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的用户_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 翻译字

我的用户_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
翻译字符串的末尾没有字符,但是当发送电子邮件时,主题在电子邮件中显示为:“您已请求重置密码=0A”

我试着搜索答案,发现Rails以前有一个ActionMailer::Quoting.quoted_可打印的方法,但Rails 4中似乎不再存在这个方法


“=0A”从哪里来?rails中有没有内置的解决方案?

我通过在末尾添加一个chomp来解决这个问题:

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

似乎有一条新线在某处引入了

我在使用“X-SMTPAPI”标头(SendCloud邮件服务)时也遇到了此问题。这是因为将处理标头:

def encode_crlf(value)
  value.gsub!(CR, CR_ENCODED)
  value.gsub!(LF, LF_ENCODED)
  value
end
当我尝试只使用Mail gem时,它起了作用。我认为这是因为字符集与Rails的默认设置不同。我是这样解决问题的:

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

如果在翻译中添加引号会发生什么情况,如:“you's requested to reset your password”不太多:使用引号p I18n.t(“emails.password\u reset.subject”)“you's requested to reset your password”不使用引号:p I18n.t(“emails.password\u reset.subject”)“you's requested to reset your password”所以我真的不明白=0A是从哪里来的:/这是混合中某个地方的某个行尾弄糟了。如果这样做会发生什么:
t('emails.password\u reset.subject').html\u safe
headers["X-SMTPAPI"] = Base64.encode64(JSON.dump({"to" => emails, "sub" => {"%name%" => names}})).gsub!(/\n/,'')