Symfony 中 RFC 2822、3.6.2 的电子邮件合规性和验证

Vin*_*inZ 2 php swiftmailer symfony symfony-validator

我在通过Symfony Email Constraint验证用户电子邮件地址,然后尝试通过Swiftmailer向该用户发送邮件时遇到问题。

假设我的用户正在使用name@@gmail.com注册(双@是示例中的故意拼写错误)。Symfony 中的电子邮件约束验证已成功验证这一点,并且在我的数据库中创建了该用户。

但是当我尝试使用 Swiftmailer 发送邮件时,出现500 错误

给定的邮箱地址 [name@@gmail.com] 不符合 RFC 2822, 3.6.2。

来自 Swiftmailer 本身。

dbr*_*ann 5

strict您可以在 Symfony 的 EmailValidator 中启用该模式,例如:

class Author
{
    /**
     * @Assert\Email(
     *     message = "The email '{{ value }}' is not a valid email.",
     *     mode = "strict"
     * )
     */
    protected $email;
}
Run Code Online (Sandbox Code Playgroud)

正如文档所说:

使用 egulias/email-validator 库执行符合 RFC 的验证。您需要安装该库才能使用此模式。

SwiftMailer 也使用 egulias/email-validator (请参阅 Swiftmailer 的composer.jsonPathHeader因此这应该会给您类似的验证结果。

  • 无论出于何种原因,该操作员发布了 3.4 版本电子邮件限制的链接。对于 3.4,配置时可以使用“strict = true”。 (2认同)