我在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中有任何内置的解决方案吗?
答案 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/,'')