【问题标题】:Unicode in SMTP: any reason not to?SMTP 中的 Unicode:有什么理由不这样做?
【发布时间】:2011-11-11 13:56:16
【问题描述】:

我想在通过 SMTP 发送的纯文本电子邮件中添加 Unicode 字符。我们的实现基于 .NET 的 System.Net.Mail,这样可以很容易地指定 Unicode 编码:

message.BodyEncoding =  System.Text.Encoding.UTF8;

即使对于英语,切换到 Unicode 也可以让我在电子邮件文本中包含项目符号(Unicode 代码点 U+2022 = •)。备用 HTML 电子邮件正文允许将 <ul> 元素用于项目符号列表,但对于纯文本电子邮件,我想要一个比使用星号或破折号更丑的解决方案。

在 SMTP 中使用 Unicode 编码有缺点吗?我是否应该担心某些收件人会因为这种编码而无法接收或阅读电子邮件?

【问题讨论】:

  • 您不必担心 SMTP - 它是一种传输方式,可以处理任何内容。收件人 - 除非您要发送给一些在未更新为使用 Unicode 的系统上使用命令行电子邮件阅读器的 Unix 瘾君子 - 您很好
  • 默认情况下,SMTP 不支持传输 8 位数据,如 UTF-8。要么 SMTP 服务器必须支持 SMTP 协议的 8BIT 扩展,并且客户端必须请求使用它们,要么必须将电子邮件编码为 7 位友好的传输编码,例如 base64quoted-printable。跨度>

标签: .net email unicode encoding smtp


【解决方案1】:

我相信这个问题有几个层次。

首先,原始 SMTP 协议不处理 UTF-8。但是,有广泛部署的扩展添加了这种支持,只要您的代码使用正确的魔法,这应该不是问题。您提到的实现可能已经足够了。

其次,如果您的 UTF-8 邮件在 SMTP 中完好无损地发送给收件人,那么他们的邮件客户端是否正确处理 UTF-8 存在问题。我相信,基本支持已得到广泛部署,但一些老客户可能会遇到问题。如果您使用外来字符,可能会出现问题,因为收件人可能没有正确的字体。但是,任何处理 HTML 电子邮件的客户端也可能处理 UTF-8。

如果您知道可能的收件人,我建议您使用他们的设置进行测试。

【讨论】:

    【解决方案2】:

    我不知道现在有任何不支持 Unicode 的邮件客户端。无论如何,最好进行一个简短的测试(至少,询问您的客户他们使用哪个邮件客户端)。消息大小增加的不利影响不算在内,除非您将收到异常庞大的消息。

    (顺便说一句:我已经习惯了纯文本邮件中的星号,它们真的那么难看吗?)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多