iphone、Android接收System.Net.Mail发的邮件标题乱码

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

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

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

  1. private static void Send()    
  2. {    
  3.     StringBuilder title = new StringBuilder();    
  4.     title.Append("=?utf-8?B?");    
  5.     title.Append(ToBase64("长长的邮件标题测试"));    
  6.     title.Append("?=");    
  7.     SendMail(title, "内容");    
  8. }    
  9.     
  10. private string ToBase64(string instr)    
  11. {    
  12.     byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(instr);    
  13.     return Convert.ToBase64String(bt);    
  14. }    

 

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

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

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

转载于:https://www.cnblogs.com/blogsChen/archive/2012/10/10/2718521.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值