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

c#将电子邮件编码从utf-8更改为iso-0-8859-1,c#,email,encoding,character-encoding,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

我使用
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+00FF(事实上,甚至没有——ISO-8859-1在U+0080和U+009F之间有一个“洞”)。因此,如果您试图发送一个包含ISO-8859-1以外字符的文本,那么该文本将无法通过。

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

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

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

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

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

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

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

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


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

电子邮件取决于我无法控制的数据。该代码是许多客户机使用的CMS的一部分。我所做的只是简单地添加了一个具有不同编码的下拉列表,以便可以为每个电子邮件模板进行更改。我不明白,当有一个多功能解决方案(utf-8)时,为什么您可能需要这样一个选项。这不值得。电子邮件依赖的数据不是我控制的。该代码是许多客户机使用的CMS的一部分。我所做的只是简单地添加了一个具有不同编码的下拉列表,以便可以为每个电子邮件模板进行更改。我不明白,当有一个多功能解决方案(utf-8)时,为什么您可能需要这样一个选项。这不值得。