.net SMTP中的Unicode:有什么理由不这样做吗?

.net SMTP中的Unicode:有什么理由不这样做吗?,.net,email,unicode,encoding,smtp,.net,Email,Unicode,Encoding,Smtp,我想将Unicode字符添加到通过SMTP发送的纯文本电子邮件中。我们的实现基于.NET的System.NET.Mail,这使得通过以下方式指定Unicode编码变得容易: message.BodyEncoding = System.Text.Encoding.UTF8; 即使对于英语,切换到Unicode也会允许我在电子邮件文本中包含要点(Unicode代码点U+2022=•)。另一种HTML电子邮件正文允许在项目符号列表中使用元素,但对于纯文本电子邮件,我想要一种比在项目符号中使用星号或

我想将Unicode字符添加到通过SMTP发送的纯文本电子邮件中。我们的实现基于.NET的System.NET.Mail,这使得通过以下方式指定Unicode编码变得容易:

message.BodyEncoding =  System.Text.Encoding.UTF8;
即使对于英语,切换到Unicode也会允许我在电子邮件文本中包含要点(Unicode代码点U+2022=•)。另一种HTML电子邮件正文允许在项目符号列表中使用
元素,但对于纯文本电子邮件,我想要一种比在项目符号中使用星号或破折号更简单的解决方案


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

我不知道现在有任何邮件客户端不支持Unicode。无论如何,一个简短的测试会更好(至少,询问你的客户他们使用哪个邮件客户机)。增加消息大小的缺点并不重要,除非您将拥有异常巨大的消息


(顺便说一句:我已经习惯了普通短信中的星号,它们真的那么难看吗?

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

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

第二,如果您的UTF-8邮件在SMTP中完好无损地保存下来,那么他们的邮件客户端是否正确处理UTF-8就成了问题。我相信,基本支持已经广泛部署,但一些老客户可能会遇到问题。如果使用外来字符,可能会出现问题,因为收件人可能没有正确的字体。然而,任何处理HTML电子邮件的客户端都可能同时处理UTF-8


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

您不必担心SMTP-它是一种传输,可以处理任何内容。收件人-除非您发送给某些Unix迷,他们在未更新为使用Unicode的系统上使用命令行电子邮件阅读器-默认情况下,SMTP不支持传输8位数据,如UTF-8。SMTP服务器必须支持SMTP协议的8位扩展,客户端必须请求使用这些扩展,或者电子邮件必须改为7位友好的传输编码,例如
base64
可打印的