C# ä;MailMessage中的字符。主题显示为ä;在hotmail中
问题:C# ä;MailMessage中的字符。主题显示为ä;在hotmail中,c#,.net,encoding,mvcmailer,C#,.net,Encoding,Mvcmailer,问题:邮件中的ä字符。主题在hotmail中显示为Ã。在Gmail中,主题中的ä字符看起来不错。如何正确编码MailMessage.Subject,使ä字符不会转换为à 这是我创建邮件消息的方式(使用): 我尝试了以下方法: x、 SubjectEncoding=Encoding.UTF8 x、 SubjectEncoding=Encoding.GetEncoding(“ISO-8859-1”) 您是否尝试过不转换它?只是使用你的值,因为你已经有了字符 我看到一些有同样问题的人报告说他们发现他
邮件中的ä
字符。主题
在hotmail中显示为Ã
。在Gmail中,主题中的ä
字符看起来不错。如何正确编码MailMessage.Subject
,使ä
字符不会转换为Ã
这是我创建邮件消息的方式(使用):
我尝试了以下方法:
- x、 SubjectEncoding=Encoding.UTF8李>
- x、 SubjectEncoding=Encoding.GetEncoding(“ISO-8859-1”)李>
- 您是否尝试过不转换它?只是使用你的值,因为你已经有了字符
我看到一些有同样问题的人报告说他们发现他们的数据已经是UTF8,所以在你报告时转换它会导致字符混乱。使用它们的字符串值直接解决了这些情况下的显示问题
我发现很多人都有同样的问题,在不同的环境中使用关键词:
ä character converted to ä hotmail
你试过不转换它吗?只是使用你的值,因为你已经有了字符 我看到一些有同样问题的人报告说他们发现他们的数据已经是UTF8,所以在你报告时转换它会导致字符混乱。使用它们的字符串值直接解决了这些情况下的显示问题 我发现很多人都有同样的问题,在不同的环境中使用关键词:ä character converted to ä hotmail
如果System.Net.Mail不能正确执行此操作,则可以尝试使用的实用程序类对标头值进行编码和解码 对于
、至
、抄送
等中的电子邮件地址显示名称,您需要使用;对于密件抄送
等,您需要使用 不幸的是,它们并不是真正设计用于System.Net.Mail的,因为您会注意到它们不返回字符串,而是返回字节[](这是因为它们是设计用于在MimeKit内部使用的-它们仅用于高级用途) 也就是说,由于从这些方法返回的字节[]是US-ASCII,因此可以使用主题
将编码的主题转换回可以在System.Text.Encoding.ASCII.GetString(result)
上设置的字符串。如果您一直使用System.Net.Mail,那么这可能是您唯一的选择。如果不是这样,我强烈建议删除System.Net.Mail,并将其替换为和(MailKit可用于SMTP、POP3和/或IMAP)MailMessage
希望对您有所帮助。如果System.Net.Mail不能正确执行此操作,您可以尝试使用的实用程序类对标头值进行编码和解码 对于
、至
、抄送
等中的电子邮件地址显示名称,您需要使用;对于密件抄送
等,您需要使用 不幸的是,它们并不是真正设计用于System.Net.Mail的,因为您会注意到它们不返回字符串,而是返回字节[](这是因为它们是设计用于在MimeKit内部使用的-它们仅用于高级用途) 也就是说,由于从这些方法返回的字节[]是US-ASCII,因此可以使用主题
将编码的主题转换回可以在System.Text.Encoding.ASCII.GetString(result)
上设置的字符串。如果您一直使用System.Net.Mail,那么这可能是您唯一的选择。如果不是这样,我强烈建议删除System.Net.Mail,并将其替换为和(MailKit可用于SMTP、POP3和/或IMAP)MailMessage
希望对您有所帮助。您必须在从Mailebase派生的类上重写PopulateHtmlPartpublic override AlternateView PopulateHtmlPart(MailMessage mailMessage, string viewName, string masterName, Dictionary<string, string> linkedResources) { var htmlPart = base.PopulateHtmlPart(mailMessage, viewName, masterName, linkedResources); htmlPart.ContentType.CharSet = mailMessage.BodyEncoding.HeaderName; return htmlPart; }
您必须在从MaileBase派生的类上重写PopulateHtmlPartpublic override AlternateView PopulateHtmlPart(MailMessage mailMessage, string viewName, string masterName, Dictionary<string, string> linkedResources) { var htmlPart = base.PopulateHtmlPart(mailMessage, viewName, masterName, linkedResources); htmlPart.ContentType.CharSet = mailMessage.BodyEncoding.HeaderName; return htmlPart; }
是的,我试着不转换它-它并没有解决问题。真是太糟糕了。其他邮件提供商是否也有这种情况?除了Hotmail?如果可能的话,我建议您测试尽可能多的邮件客户端,以确定正在发生的事情。这也将有助于您搜索有关该问题的更多信息,因为我发现了很多信息,这对于hotmail来说并不特殊,因此很难判断哪些信息可能有用,哪些信息可能无效例如,Outlook express可能由于其默认设置而出现编码问题。祝你好运是的,我试着不转换它-它并没有解决问题。真是太糟糕了。其他邮件提供商是否也有这种情况?除了Hotmail?如果可能的话,我建议您测试尽可能多的邮件客户端,以确定正在发生的事情。这也将有助于您搜索有关该问题的更多信息,因为我发现了很多信息,这对于hotmail来说并不特殊,因此很难判断哪些信息可能有用,哪些信息可能无效例如,Outlook express可能由于其默认设置而出现编码问题。祝你好运给了我同样的结果。这就是hotmail中原始数据的外观:主题:BestÃllningsbekrÃftelse内容类型:text/html;charset=utf-8内容传输编码:base64I正在使用MvcMailer。我认为MvcMailer继承自System.Net.Mail类。我必须使用MvcMailer,因为我需要使用它的模板功能。也许有一种选择是编写一个从MvcMailerMessage继承的新CustomMvcMailerMessage?还可以编写一个新的自定义SMTP类,使用MailKit扩展MvcMailer SMTP对象?如果主题标题看起来像
,则有人正在解码标题,Hotmail由于某种原因无法正确呈现。FWIW,它看起来像是UTF-8,使用iso-8859-1编码转换成unicode显示字符串。给了我相同的结果。这就是hotmail中原始数据的外观:主题:BestÃllningsbekrÃftelse内容类型:text/html;charset=utf-8内容传输编码:base64我正在使用MvcMailSubject:BestÃllningsbekrÃftelse