Ruby on rails 如何防止邮件头出现格式错误?
在我的Ruby on Rails应用程序中,我有一个Mailer类,它使用用户定义的邮件头发送电子邮件: 我使用的是与此代码稍有不同的版本,并随附交付 我遇到的问题是,当@user.name格式错误时(例如,包含逗号),mailer方法会自动失败,从而在日志中生成Net::SMTPSyntaxError 504 5.5.2 防止这种情况的最好办法是什么?我想在User类中编写一个验证方法,将某些字符列入黑名单或白名单,但我不知道是哪些字符。到目前为止,引起问题的唯一字符是逗号。追查起来就完全不同了Ruby on rails 如何防止邮件头出现格式错误?,ruby-on-rails,email,actionmailer,email-headers,Ruby On Rails,Email,Actionmailer,Email Headers,在我的Ruby on Rails应用程序中,我有一个Mailer类,它使用用户定义的邮件头发送电子邮件: 我使用的是与此代码稍有不同的版本,并随附交付 我遇到的问题是,当@user.name格式错误时(例如,包含逗号),mailer方法会自动失败,从而在日志中生成Net::SMTPSyntaxError 504 5.5.2 防止这种情况的最好办法是什么?我想在User类中编写一个验证方法,将某些字符列入黑名单或白名单,但我不知道是哪些字符。到目前为止,引起问题的唯一字符是逗号。追查起来就完全不同
谢谢您的帮助。我的猜测是,您必须检测和;只是,让我得出结论的是,如果你试图撰写一封电子邮件,例如gmail,你就开始在部分中键入姓名,一旦键入,或者;它将其视为分隔符。所以正则表达式非常简单
/[,;]/
更新
找到了这个支持性答案好的,我自己设法找到了解决方案 这是我的用户模型中的旧代码: 这是正确的版本:
def sender
display_name = profile.company_name? ? profile.company_name : name
%("#{display_name} (via #{APP_NAME})" <#{NO_REPLY_EMAIL}>)
end
关键是。电子邮件发送时是否不使用全名,只是使用电子邮件,还是使用“干净”的全名?我认为504 5.5.2和“来自电子邮件”或您的smtp服务器不好或其他问题有关,尽管我可能错了there@SimpleLime:是的,你完全正确。造成麻烦的是发件人地址,而不是收件人地址。我更正了我最初的帖子。谢谢。这部分解决了问题,谢谢。然而,最后我提出了一个更干净的解决方案,请看我的答案。在以后的问题中,您应该尝试发布导致问题的代码,或者更紧密地匹配它。您的问题示例的名称周围有双引号。如果我们看到这个方法的话,一小时前就可以告诉你这是个问题了
def sender
display_name = profile.company_name? ? profile.company_name : name
"#{display_name} (via #{APP_NAME})<#{NO_REPLY_EMAIL}>"
end
def sender
display_name = profile.company_name? ? profile.company_name : name
%("#{display_name} (via #{APP_NAME})" <#{NO_REPLY_EMAIL}>)
end