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

我正在尝试通过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 = 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…”,最后一部分被正确解码。你能解释一下,你能提供什么吗?当然,我建议您使用多个编码设置,而不是一个:我想您知道当系统以西里尔文、中文或美国/欧元发送电子邮件时,您可以使用开关盒或适配器结构,根据接收者的不同,强制使用不同的编码,我希望这一点很清楚:)