内容显示页
 
类别:.Net + C# | 浏览(498) | 2011-11-12 14:12:05

  我们一直使用System.Net.Mail给客户发各种邮件,系统供香港使用,但一直以来有一个问题:

  有些版本的iphone及android收到邮件后会显示乱码,而我们自己的这两种类型的手机却正常,起初以为是编码问题,所以把相关属性都设置为utf-8,但问题依旧,后经过测试发现是因为Subject里有一些特殊字符,替换后便正常了,但数据来源不定,都进行替换不现实。

  此事来来回回半年过去了,客户追着不放,同事再次研究了下,原因还是编码问题,不过需要特殊处理下Subject,而不是只设置下属性,此问题终于解决,柳永法(yongfa365)'Blog特此记录。


参考地址:http://blog.csdn.net/whowhen21/article/details/5959225

在做项目时候,用到.Net的System.Net.Mail发送邮件,经测试,发现如果标题过长,收到的就会是乱码了(那种Base64格式的数据),几经测试,发现只能放60个中文汉字,多一个标点就出问题,后来想办法,解决了,现奉上解决方案~

把邮件标题转换成base64编码的,但是有特定的要求

private static void Send()  
{  
    StringBuilder title = new StringBuilder();  
    title.Append("=?utf-8?B?");  
    title.Append(ToBase64("长长的邮件标题测试"));  
    title.Append("?=");  
    SendMail(title, "内容");  
}  
  
private string ToBase64(string instr)  
{  
    byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(instr);  
    return Convert.ToBase64String(bt);  
}  

 

那里的utf-8是你设定的邮件编码,要和下面ToBase64中的一致才行。

当然,如果标题还是过长的话,这种还是会出现乱码,解决方法就是把标题拆分成若干段,没段都用StringBuilder那里的处理方法,最后在拼接起来作为标题,发送时没有问题的。至此,这个问题就解决啦。

不过也许这个问题和邮件服务器有关吧,我是在自己的服务器上才出现这个问题,163之类的我没测。希望能对遇到相同问题的童鞋有所帮助。


引用:
【已解决】iphone、Android接收System.Net.Mail发的邮件标题乱码
http://www.yongfa365.com/item/iphone-Android-System.Net.Mail-luanma.html
 
 
相关链接
 
网友评论:
1 星星 - 2012-3-15 10:28:21
這個問題的確是鬧了很久的,這中英文編碼的問題真是個麻煩事啊
 
2 工作室 - 2011-11-17 15:03:33
模模糊糊理解一点
一看以为是iphone和android的开发相关呢
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
.Net + C#(74)
 
 
ASP+VBS(161)
 
 
 
Linux(10)
 
 
 
web 2.0(26)
 
 
 
 
 
心程(68)
 
生活(97)
 
 
     

Power by :柳永法(yongfa365)'Blog  | 京ICP备07011491号  QQ:64049027  E-mail:64049027@qq.com Weibo

申请友情链接 要求:跟本站主题相类似正规网站,双方交换为首页位置

转载请注明来源,以便后人及时得到最新、修正、加强版!!!