1

我使用System.Net.Mail. 到目前为止,我已将邮件编码设置为 utf-8,但现在我必须使用 ISO-8859-1 编码发送。我了解,如何更改编码,我可以安全地更改编码吗?改变这一点我会面临什么问题?

var email = new MailMessage(from, to)
{
    Subject = formManager.ReplaceValuesInString(alert.EmailSubject, replaceValues),
    IsBodyHtml = (alert.EmailMode == 2),
    BodyEncoding = Encoding.UTF8
};
4

2 回答 2

1

我希望你面临的主要问题是,虽然 UTF-8 涵盖了整个 Unicode,但 ISO-8859-1 没有——它只有 U+0000 到 U+00FF(甚至没有,实际上——有一个ISO-8859-1 中 U+0080 和 U+009F 之间的“洞”)。因此,如果您尝试发送包含非 ISO-8859-1 字符的文本,该文本将无法通过。

于 2012-09-26T12:00:56.653 回答
0

这取决于谁在写电子邮件。

如果电子邮件都是系统生成的(由您),只需确保电子邮件的任何部分(如果从 dbase、Web 服务中提取某些内容......)都不包含不一致的字符。但是,如果您将用户输入作为电子邮件的全部/部分进行中继,那就不那么容易了。

结论:如果电子邮件是系统生成的,只要您控制内容的生成方式,以任何编码发送它们都是安全的。如果您无法控制,请使用兼容的编码,该编码涵盖可能需要存储的所有可能字符。

注意:除非我们谈论的是大量的数据存储,否则不建议使用其他编码而不是 utf-8 来存储用户输入。此外,在 dbase 或文件系统上使用 utf-8 编码浪费的空间可以通过底层系统(fs、dbase)的内置压缩方法来节省并留给它们。

于 2012-09-26T12:25:00.950 回答