在 Postfix 服务器上尝试使用 PowerShell 或 System.Web.Mail.SmtpMail .NET 类向具有扩展 ASCII 字符的收件人发送电子邮件时,出现以下错误:
The client or server is only configured for E-mail addresses with ASCII local-parts: livelink+264096812$£&@mytenant.onmicrosoft.com
The server rejected one or more recipient addresses. The server response was: 500 5.5.2 Error: bad UTF-8 syntax
英镑符号“£”很可能是罪魁祸首,因为它是唯一的非 7 位/扩展 ASCII 字符。
我到处搜索了如何在收件人地址中使用扩展 ASCII 字符的实际示例,但似乎没有任何效果。我知道这是可行的,因为我可以从 Outlook 成功向该邮箱发送电子邮件。但我无法从 PowerShell 命令行进行操作。我的 Postfix 服务器是最新的,并配置了 8BITMIME 和 SMTPUTF8 支持。
我非常感谢您的帮助!
很可能您必须将字符串编码为仅 ASCII 范围字符的字符串,并使用 Punycode:
# -> 'xn--livelink+264096812$&@mytenant-t4a.onmicrosoft.com'
[System.Globalization.IdnMapping]::new().GetAscii('livelink+264096812$£&@mytenant.onmicrosoft.com')