c#将电子邮件编码从utf-8更改为iso-0-8859-1

时间:2012-09-26 11:58:30

标签: c# email encoding character-encoding

我使用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
};

2 个答案:

答案 0 :(得分:1)

我期望你面对的主要问题是虽然UTF-8涵盖了整个Unicode,但ISO-8859-1却没有 - 它只有U + 0000到U + 00FF(实际上不是这样,实际上 - 在U + 0080和U + 009F之间的ISO-8859-1中有一个“洞”。因此,如果您尝试发送的文字不是ISO-8859-1中的字符,那么该文字将无法通过。

答案 1 :(得分:0)

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

如果电子邮件全部由系统生成(由您),请确保没有电子邮件的任何部分(如果从dbase,Web服务中提取内容......)包含不一致的字符。 但是如果你在整个/部分电子邮件中转发用户输入,那就不那么容易了。

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

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