时间:2010-07-26 07:09:53

标签: .net encoding internationalization mailmessage

1 个答案:

答案 0 :(得分:2)

简短的回答是

现在,我将详细阐述为什么。正确的i18n-ed邮件支持这些功能:

  • 国际化域名(IDNA)支持From和To标头(以及CC,BCC,Reply-To等)
  • 主题和其他标题的可识别且安全的编码
  • 正确的身体编码

目前,i18n-ed域名是基本的ASCII字符串,通过Punycode进行编码(您可以在RFC 3492RFC 5891RFC 5890中详细了解它。简而言之,您应该使用IdnMapping类将UTF-16字符串转换为ASCII(您可以通过调用GetAscii()方法进行转换。

通过安全编码主题行和其他(非地址类)标题,我的意思是暂时它应该仍然是7位安全的,因为相当多的旧的和过时的邮件传输代理不支持8在这里编码。因此,您实际上可以在这里支持用户选择,但如果用户选择了ISO-8859-x,KOI-8-x或Shift-JIS之类的东西,我建议使用Quoted Printable或Base64算法进一步编码标题,以确保。如果用户选择UTF-8,您可以使用UTF-7以及QP或B64编码标题。

最后但并非最不重要的是,您甚至可以支持用户选择的电子邮件正文编码。但是,如果它是16位基数(如UCS2或UTF-16),我建议将传输编码设置为类似Base64。