c#邮件中的西里尔语主题编码
我正在尝试通过c#发送电子邮件,并使用以下代码:c#邮件中的西里尔语主题编码,c#,system.net.mail,C#,System.net.mail,我正在尝试通过c#发送电子邮件,并使用以下代码: public static bool SendSMTPMail(string smtphost, int smtpport, string smtplogin, string smtppassword, string from, string to, string subject, string body, bool isHtml) { try { using (MailMessage message
public static bool SendSMTPMail(string smtphost, int smtpport, string smtplogin, string smtppassword, string from, string to, string subject, string body, bool isHtml)
{
try
{
using (MailMessage message = new MailMessage(from, to, subject, body))
{
message.IsBodyHtml = isHtml;
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient mailClient = new SmtpClient(smtphost, smtpport);
mailClient.EnableSsl = false;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.Credentials = new NetworkCredential(smtplogin, smtppassword);
mailClient.Send(message);
return true;
}
}
catch
{
return false;
}
}
当在Windows中接收邮件时,它可以正常工作,但当用户试图在MacOS-subject标题中读取邮件时,它的编码是错误的。
如果我将主题编码设置为Windows-1251,效果会很好,但只适用于西里尔语主题,而且我还将发送亚文
如何使用纯Unicode发送电子邮件
第二个问题——如果我在邮件中添加任何附件,它将添加额外的文件——“filelist.xml”和“header.htm”
如何摆脱它们
萨克斯 更好的解决方案是创建一个结构或一个自动化系统,按照接收机格式对系统进行不同编码:
- 通用utf8
- 西里尔文iso xxx
- iso xxy中文版
等等。关于我发现的第二个问题,它很有帮助
对于编码问题,我选择只发送主题为英语的邮件…在Outlook中,主题看起来像“主题:=?utf-8?B?QNVZAW5LC3MGU3R1ZGLVINC00LVRJYDQV9GA0L7RHC10YHR?==?utf-8?B?GDC40L7QVDCW0LVQVTCYLCQSTC10LHQUNC90LDRGCAWNI4WNC4XMIDQ?=?utf-8?B?sy4=?”。似乎,错误在于拆分…MacOS用户能找出Mac认为它是什么编码吗?他们使用什么电子邮件程序?如果他们使用的是webmail,建议他们将浏览器的文本编码设置为“自动”。MAcOS使用自动编码,但没有帮助。他们还试图通过检查每一种可能性来找到正确的编码方式,但这也无助于SEXTRA信息:如果受试者足够长,它被分成3个部分=?utf-8?B?QWE…?=然后前两部分显示为“QWE…”,最后一部分被正确解码。你能解释一下,你能提供什么吗?当然,我建议您使用多个编码设置,而不是一个:我想您知道当系统以西里尔文、中文或美国/欧元发送电子邮件时,您可以使用开关盒或适配器结构,根据接收者的不同,强制使用不同的编码,我希望这一点很清楚:)