参考地址: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之类的我没测。希望能对遇到相同问题的童鞋有所帮助。