当前位置:编程学习 > C#/ASP.NET >>

C#收取邮件的时候 有部分from乱码 在线等

=?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?=

上面就是乱码的内容,弄了很久都没弄到原文,哪位大鸟帮帮我阿! 感激不尽!

我是用这个组件 获取的
using LumiSoft.Net.POP3.Client;
using LumiSoft.Net.Mime; --------------------编程问答-------------------- 我试了下不是编码问题 没用过这个组件 帮你顶! --------------------编程问答-------------------- 唉 给这问题烦了一天! 测试了很多次 只能编译出 英文邮箱 其他一概乱码! 烦阿! --------------------编程问答-------------------- 你要做什么类型的邮箱传递.我这里有个刚做的.目前没出问题.你可以参考
        
        //获取当前对象名字
        string Name = FileUpload1.PostedFile.FileName;
        //获取当前对象地址
        string Path = Path.Substring(Path.LastIndexOf("\\") + 1);
        string Extend = Path.Substring(Path.LastIndexOf(".") + 1);
        //邮件对象
        MailMessage mm = new MailMessage();
        //邮件内容
        mm.Body = "<p>征文</p>";
        //邮件内容正文编码
        mm.BodyEncoding = System.Text.Encoding.UTF8;
        //发件人邮箱地址
        mm.From = new MailAddress("发件人邮箱地址");
        //正文是否可以使用HTML格式
        mm.IsBodyHtml = true;
        //回复地址和发件人地址应该是一样的。
        mm.ReplyTo = new MailAddress("发件人邮箱地址");
        //邮件标题RadioButtonList
        mm.Subject = "邮件标题";
        //指定邮件标题编码格式
        mm.SubjectEncoding = System.Text.Encoding.UTF8;
        //收件人地址集合,可以群发
        mm.To.Add(new MailAddress("收件人邮箱地址"));
        //电子邮件发件人地址
        mm.Sender = new MailAddress("发件人邮箱地址");
        //添加邮件附件
        if ((Extend == "doc" || Extend == "txt" || Extend == "wps"))
        {
            Attachment att = new Attachment(this.FileUpload1.PostedFile.FileName);
            mm.Attachments.Add(att);
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("请确认您的文件格式");
            return;
        }
        //简单邮件传送协议对象
        SmtpClient client = new SmtpClient();
        // 电子邮件通过网络发送
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        //设置通信服务器,发件人SMTP协议.
        client.Host = "smtp.163.com";
        //用于验证发件人身份凭证。
        client.Credentials = new System.Net.NetworkCredential("发件人邮箱地址", "发件人邮箱密码");
        //发送邮件
        client.Send(mm); --------------------编程问答-------------------- =?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?=

=号是起始结束符

?号是分割符

utf8是编码

B是指base64加密

Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+
是加密后的数据内容

按将数据内容用Convert.FromBase64String转换,获取byte[]数据,再用utf8编码转换为string就是所要的数据了。 --------------------编程问答-------------------- 建议楼主多看看邮件MIME协议 --------------------编程问答-------------------- 按4楼的方法,也转换不了! --------------------编程问答-------------------- 是GMAIL邮箱的某部分邮件出现这种问题! 其他都很正常! --------------------编程问答--------------------
引用 4 楼 sbshu 的回复:
=?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?=

=号是起始结束符

?号是分割符

utf8是编码

B是指base64加密

Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g……



+1 --------------------编程问答--------------------
引用 7 楼 a157537648 的回复:
是GMAIL邮箱的某部分邮件出现这种问题! 其他都很正常!


+1什么意思!? --------------------编程问答-------------------- 学习学习 --------------------编程问答--------------------
引用 8 楼 nofc2006 的回复:
引用 4 楼 sbshu 的回复:
=?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?=

=号是起始结束符

?号是分割符

utf8是编码

B是指base64加密

Iu+/vdC577+977+9y7Lv……


+1是什么意思!? --------------------编程问答--------------------
引用 11 楼 a157537648 的回复:
引用 8 楼 nofc2006 的回复:

引用 4 楼 sbshu 的回复:
=?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?=

=号是起始结束符

?号是分割符

utf8是编码

B是指base64加密
……

+1 太深奥了,学习了! --------------------编程问答-------------------- 大鸟们 告诉一下 怎么解码啊! 都烦的像疯子一样了! --------------------编程问答-------------------- 怎么 没有可以帮我解决一下么! --------------------编程问答-------------------- 如此解决:
		private string GetBody(string body)
{
body = body.Remove(0, "=?utf-8?B?".Length);
string[] array = body.Split(new string[] { "?=" }, StringSplitOptions.RemoveEmptyEntries);
body = string.Empty;
foreach (string str in array)
{
body += FromBase64(str);
}
return body;
}

private string FromBase64(string instr)
{
byte[] bt = Convert.FromBase64String(instr);
return Encoding.UTF8.GetString(bt);
}

你去试试看吧~[align=center]********************************************************
本内容用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
********************************************************
[/align] --------------------编程问答-------------------- 调用方法,GetBody(mailBody);//mailBody是你获取到邮件的内容,返回的是正常的内容[align=center]********************************************************
本内容用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
********************************************************
[/align] --------------------编程问答--------------------
引用 15 楼 whowhen21 的回复:
如此解决:
C# code
        private string GetBody(string body)
        {
            body = body.Remove(0, "=?utf-8?B?".Length);
            string[] array = body.Split(new string[] { "?=" }, StringSpli……

15楼的 我试了 不行! --------------------编程问答-------------------- 返回的是什么?[align=center]********************************************************
本内容用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
********************************************************
[/align] --------------------编程问答--------------------
引用 18 楼 whowhen21 的回复:
返回的是什么?
********************************************************
本内容用 CSDN小秘书 回复
每天回帖即可获得10分可用分!
********************************************************



楼上的 这就是返回的内容:
���9��˹o������ ����÷\"��gzyx�x�nz��\rak\f.�jom�com> --------------------编程问答-------------------- 谁来帮帮我阿?! --------------------编程问答-------------------- 谁来帮帮我阿?! --------------------编程问答-------------------- 帮顶,我也遇到过。 --------------------编程问答-------------------- 大鸟 高手 路过的 帮帮小弟! --------------------编程问答-------------------- 等了三天了! 还是没解决方案! --------------------编程问答-------------------- 用string.Format试试,要不行就用url解码哪个类,我忘了,很久没写了,网上搜一下 --------------------编程问答-------------------- 用 javax.mail 分析邮件内容,我从来这么做的,你看下自带的例子 --------------------编程问答-------------------- 用 javax.mail 分析邮件内容,

=?utf-8?B?Iu+/vdC577+977+9y7Lvv73vv73vv73vv73vv70g77+977+90afvv73vv70iIDxnenl4YnJvbnRAZW1haWwuY2pvbC5jb20+?= 这应该是subject吧,读取mail后直接调用getsubject()就可以了

--------------------编程问答-------------------- C#.net
楼上2位 能说白点么!? --------------------编程问答-------------------- 是编码问题 
这个你要用system.encoding.default.......什么之类的来解
--------------------编程问答-------------------- 邮件主题出现 ������

怎么解决。。。 --------------------编程问答--------------------
引用 15 楼 whowhen21 的回复:
如此解决:
C# code
        private string GetBody(string body)
        {
            body = body.Remove(0, "=?utf-8?B?".Length);
            string[] array = body.Split(new string[] { "?=" }, StringSpli……



好办法 --------------------编程问答-------------------- 正是我查找的内容,希望有帮助。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,