c#将电子邮件编码从utf-8更改为iso-0-8859-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
};

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

这取决于谁在写电子邮件

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

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

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

最新更新