【问题标题】:PHPMailer Character ñ on recipient addressPHPMailer 字符 - 在收件人地址上
【发布时间】:2014-07-02 15:29:02
【问题描述】:

当我尝试向包含字母“ñ”的收件人地址发送电子邮件时,我在 phpmailer 上遇到下一个错误,例如:

致命错误:带有消息的未捕获异常“phpmailerException” '无效地址:lauro.muñoz@live.com.mx'

我知道它说这是一个无效的地址,它只是因为它包含字母ñ,在$mail = new PHPMailer(true); 之后使用$mail->CharSet = 'UTF-8';,不起作用。

任何没有 ñ 的常规地址都可以正常工作。有什么方法可以使 ñ 的电子邮件地址有效吗?

【问题讨论】:

  • 您在$mail = new PHPMailer(true); 之前尝试过使用$mail->CharSet = 'UTF-8'; 吗?
  • @Fred-ii- 在对象创建之前设置属性有点困难
  • 似乎是 PHPMailer 本身的失败。它的 ValidateAddress 方法不是 unicode 安全的
  • 电子邮件地址的正则表达式验证注定要失败,因为它试图击中移动的目标。也许尝试更成熟的电子邮件,如swiftmailer.org

标签: php email


【解决方案1】:

似乎这些字符不允许成为电子邮件地址 http://en.wikipedia.org/wiki/E-mail_address#Local_part 的“本地部分”的一部分。

【讨论】:

  • 如果提供答案,您可以通过链接在此处添加更多相关详细信息,否则您可以将其发布为评论而不是答案。
【解决方案2】:

您的问题下方的评论表明您的邮件根本不支持国际化电子邮件地址。如果是这种情况,您可以使用的解决方法是将地址转换为其纯 US-ASCII 等价物。用于此的编码称为 punycodeFor instance:

lauro.muñoz@live.com.mx

...变成

lauro.xn--muoz-hqa@live.com.mx

...应该是完全相同的邮箱。

免责声明:我从未使用过国际化地址,请彻底测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2016-05-28
    • 2017-05-11
    • 2017-02-18
    • 2012-12-03
    • 2022-07-26
    • 1970-01-01
    相关资源
    最近更新 更多