【问题标题】:Using Mimekit to send to email addresses that contain special characters使用 Mimekit 发送到包含特殊字符的电子邮件地址
【发布时间】:2017-08-25 14:39:57
【问题描述】:

我正在尝试通过启用 SMTPUTF8 扩展名的邮件服务器向电子邮件地址发送电子邮件:coordinación@test.xxxxx.com,其中包含使用 Mailkit 的特殊字符(已仔细检查通过从 shell 脚本发送示例测试电子邮件也是如此)。

Mailkit 将异常报告为“SMTP 服务器不支持 SMTPUTF8 扩展”,我应该做些什么来对电子邮件地址进行不同的编码吗?。

我已尝试对 MailboxAddress 构造函数使用 UTF-8 编码,但结果相同。请找到相同的协议日志。

Connected to smtp://mail5xx.xx.xxxxx.com:25/?starttls=when-available
S: 220 mail5xx.xx.xxxxx.com ESMTP service ready
C: EHLO [192.xxx.xx.xxx]
S: 250-mail5xx.xx.xxxxx.com says hello
S: 250-ENHANCEDSTATUSCODES
S: 250-PIPELINING
S: 250-CHUNKING
S: 250-8BITMIME
S: 250-AUTH CRAM-MD5 PLAIN LOGIN
S: 250-AUTH=CRAM-MD5 PLAIN LOGIN
S: 250-XACK
S: 250-SIZE 0
S: 250-VERP
S: 250 DSN

编辑: 如果我使用 Mailkit 1.1.4(感谢 Jeff 的快速补丁),这对我来说不再是问题,显然一些邮件服务器即使没有启用 SMTP UTF8 扩展也可以发送 UTF 邮件,这很奇怪。

【问题讨论】:

  • 请包含protocol log 以帮助诊断问题(注意:请务必清除后面任何base64 数据的任何AUTH 命令,因为它将包含您的用户名/密码)。
  • 对不起,已经包含了,有什么需要分享的吗?

标签: c# utf-8 smtpclient mailkit mimekit


【解决方案1】:

根据服务器对EHLO 命令的响应,它支持SMTPUTF8 扩展。

请注意,如果它确实支持它,那么它将在响应中列出,如下所示:

C: EHLO [192.xxx.xx.xxx]
S: 250-mail5xx.xx.xxxxx.com says hello
S: 250-ENHANCEDSTATUSCODES
S: 250-PIPELINING
S: 250-CHUNKING
S: 250-8BITMIME
S: 250-AUTH CRAM-MD5 PLAIN LOGIN
S: 250-AUTH=CRAM-MD5 PLAIN LOGIN
S: 250-XACK
S: 250-SIZE 0
S: 250-VERP
S: 250-DSN
S: 250 SMTPUTF8

【讨论】:

  • 那么,有没有办法对地址进行编码并发送呢?电子邮件@jstedfast?>
  • 我不知道:(
  • @Krylor 你能确认对地址的本地部分('@'之前的部分)使用 punycode 有效吗?如果是这样,我会将其添加到 MimeKit/MailKit。
  • 是的,它看起来只是忽略了 smtp 服务器不支持 SMTPUTF8 并发送 UTF8 的事实。
  • MimeKit 和 MailKit 1.14 已发布此修复程序。
猜你喜欢
  • 1970-01-01
  • 2019-09-01
  • 2019-01-22
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 2010-10-03
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多