在ASP.NET中 使用jmail提取KERIO邮件系统的邮件时 乱码据我了解,乱码原因是:KERIO邮件系统在发送邮件时,标题用的是UTF-8格式,而内容用的是 GB2312格式。
当我用jmail提取KERIO邮件时,展现的标题均为乱码,当然内容是正确的。
提取的邮件如果是其他邮件(比如:GMAIL),标题就不是乱码。以下是邮件标题:
鍥炲: 鍐呯淇敼鎯呭喌以下是邮件内容:
收到!显示格式是 GB2312如果转成UTF-8
结果就是:回复: 内管修改情况 �յ���
跪求解决方案!
当我用jmail提取KERIO邮件时,展现的标题均为乱码,当然内容是正确的。
提取的邮件如果是其他邮件(比如:GMAIL),标题就不是乱码。以下是邮件标题:
鍥炲: 鍐呯淇敼鎯呭喌以下是邮件内容:
收到!显示格式是 GB2312如果转成UTF-8
结果就是:回复: 内管修改情况 �յ���
跪求解决方案!
解决方案 »
- 装了SQL2008来,帮个忙倒个脚本送分
- asp.net 1.1 连接sqlserver的问题.
- .net 做pdf格式文件的索引搜索~请大家帮忙~~~~~~~~~~~~~~~~~
- 为什么Cookies没有注销?
- 大侠帮忙看一下,我实在不会了。
- 如何编写快速登录框呀?
- 请高手指点下 document.all("DropDownList2").length=0;后恢复原来的数据?
- 还是关于asp.net运行的环境问题。
- 请问ParseControl如何加载自定义控件?
- 调试程序提示 在 ConnectionString 中未指定 OLE DB 提供程序,请高手指点
- 学习asp.net源码的困惑
- 关于MVC的IAuthorizationFilter,验证失败怎么停止运行Action?
jmail.silent = true '屏蔽例外错误,返回FALSE跟TRUE两值j
jmail.logging = true '启用邮件日志
jmail.Charset = "GB2312" '邮件的文字编码为国标
jmail.ContentType = "text/html" '邮件的格式为HTML格式
Jmail.Encoding="BASE64";jmail.ISOEncodeHeaders = false '是否进行ISO编码,默认为True(加上了这一句)
jmail.AddRecipient email '邮件收件人的地址
jmail.From = "[email protected]" '发件人的E-MAIL地址
jmail.MailServerUserName = "[email protected]" '登录邮件服务器所需的用户名
jmail.MailServerPassword = "11111" '登录邮件服务器所需的密码jmail.Subject = title '邮件的标题
jmail.Body = content '邮件的内容
'jmail.Prority = 1 '邮件的紧急程序,1 为最快,5 为最慢, 3 为默认值
jmail.Send("Smtp.163.com") '执行邮件发送(通过邮件服务器地址)
jmail.Close() '关闭对象
去掉这句试试: jmail.ContentType = "text/html"
请问用JMAIL如何获取???
现在的提取方法是:jmail.POP3Class.Connect()方法
{
Body = mailMessage.Body;
mailMessage.Charset = "UTF-8";
Subject = mailMessage.Subject;
}
else
{ }
你的意思是设置在 发邮件那里吧? 我提过了,KERIO的邮件系统,我可以设置,但无法修改程序。
mailMessage.Charset = "GB2312";
mailMessage.ContentTransferEncoding = "base64";
mailMessage.Encoding = "base64";
mailMessage.ISOEncodeHeaders = false;
mailMessage.Subject="鍥炲: 鍐呯淇敼鎯呭喌";
KERIO上发的邮件 的标题格式是UTF-8的
mailMessage.Charset = "gb2312";
mailMessage.ContentTransferEncoding = "base64";
mailMessage.Encoding = "base64";
mailMessage.ISOEncodeHeaders = false;
string mailDody = mailMessage.Body;
mailMessage.Charset = "utf-8";
string mailSubject = mailMessage.Subject;内容都是正确的 就是 标题不对 还是乱码
http://topic.csdn.net/u/20070411/14/9e3475b3-98dd-4073-bf8f-ff7bfc888468.html
mailMessage.ContentTransferEncoding = "base64";
mailMessage.ISOEncodeHeaders = false; 这样呢
请问这里的代码转成ASP。NET是怎么样的
----------------------------------------------------你现在能得到类似的字符串么 是标题 的内容
这串值就是这样得到的
不过,mailMessage.FromName应该是邮件的发送人 才对啊
mailMessage.Subject 得到的是乱码
----NEXT_BM_F330C8A609004A96B4CA8DFCFF91AF6A
Content-Type: text/plain
Content-Transfer-Encoding: base64suLK1KGjsKy4pcmttdi3vS4uICANCrLiytSho7CsuKXJrbXYt70uLrLiytSh
o7CsuKXJrbXYt70u
----NEXT_BM_F330C8A609004A96B4CA8DFCFF91AF6A
Content-Type: text/html
Content-Transfer-Encoding: base64PCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTic+DQo8aHRtbD4NCjxoZWFkPg0KIDxtZXRhIGh0
dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sO2No
YXJzZXQ9VVRGLTgnPg0KIDxzdHlsZT5CT0RZe2ZvbnQ6MTBwdCBUYWhvbWEs
IFZlcmRhbmEsIHNhbnMtc2VyaWY7fTwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9k
eT4NCrLiytSho7CsuKXJrbXYt70uLg0KPERJVj6y4srUoaOwrLilya212Le9
LrLiytSho7CsuKXJrbXYt70uPC9ESVY+PC9ib2R5PjwvaHRtbD4=
----NEXT_BM_F330C8A609004A96B4CA8DFCFF91AF6A--
mailMessage.Headers.GetHeader("Subject")你看看mailMessage 有没有 Headers 属性
"娴嬭瘯銆傝壘寮楁.\t鍦版柟."
o7CsuKXJrbXYt70u
这串是不是编译过的标题?
Sender: "=?utf-8?Q?=E7=AB=A5=E7=8C=9B?=" <[email protected]>
From: "=?utf-8?Q?=E7=AB=A5=E7=8C=9B?=" <[email protected]>
Date: Thu, 11 Mar 2010 14:46:49 +0800
To: "" <[email protected]>
X-Priority: 3
X-MSMail-Priority: Normal
MIME-Version: 1.0
X-Mailer: JMail 4.4 by Dimac
Content-Type: multipart/mixed;
boundary="--NEXT_BM_B2991028751B4A3DABF34FF131CE9D3A"
This is a multipart message in MIME format.
----NEXT_BM_B2991028751B4A3DABF34FF131CE9D3A
Content-Type: text/plain
Content-Transfer-Encoding: base64suLK1KGjsKy4pcmttdi3vS4uICANCrLiytSho7CsuKXJrbXYt70uLrLiytSh
o7CsuKXJrbXYt70u
----NEXT_BM_B2991028751B4A3DABF34FF131CE9D3A
Content-Type: text/html
Content-Transfer-Encoding: base64PCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTic+DQo8aHRtbD4NCjxoZWFkPg0KIDxtZXRhIGh0
dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sO2No
YXJzZXQ9VVRGLTgnPg0KIDxzdHlsZT5CT0RZe2ZvbnQ6MTBwdCBUYWhvbWEs
IFZlcmRhbmEsIHNhbnMtc2VyaWY7fTwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9k
eT4NCrLiytSho7CsuKXJrbXYt70uLg0KPERJVj6y4srUoaOwrLilya212Le9
LrLiytSho7CsuKXJrbXYt70uPC9ESVY+PC9ib2R5PjwvaHRtbD4=
----NEXT_BM_B2991028751B4A3DABF34FF131CE9D3A--
这个应该是整个邮件的最完整信息了 是byte64的
o7CsuKXJrbXYt70u解码后:测试。艾弗森地方.. 测试。艾弗森地方..测试。艾弗森地方.
我贴出的那部分应该是BODY部分的。。
真正的标题应该是SUBJECT 是一堆乱码,获取到的值只有内容转义成了BATY64 标题没被转义
取邮件的方法是:
popMail.Connect(sEmail, sPwd, sIp, Convert.ToInt32(Port));
for (int i = 1; i <= popMail.Count; i++)
{
mailMessage = popMail.Messages[i];
mailMessage.ContentTransferEncoding = "base64";
mailMessage.ContentType = "text/plain";
string aaa=mailMessage.Headers.GetHeader("Subject");
}
这句漏下了 我也加了的
Response.Write(Encoding.UTF8.GetString(Encoding.GetEncoding("GB2312").GetBytes("娴嬭瘯銆傝壘寮楁.\t鍦版柟.")));
不过不知道怎么搞的 多了个/t
这个/t还是获取subject时就有了的 不知道怎么回事原标题是:测试。艾弗森地方.
Response.Write(Encoding.UTF8.GetString(Encoding.GetEncoding("GB2312").GetBytes("娴嬭瘯銆傝壘寮楁.\t鍦版柟.")));得到的是:测试。艾弗森\t地方.
去掉\t就可以的,怎么无缘无故多出来了? 不知道怎么回事。
所以不能这样判断。。
而正确标题的邮件的mailMessage.Text属性是没的
我用
if (mailMessage.Text.IndexOf("utf-8") > 0)
判断了一下 结果可行。问题终于解决了!!!谢谢你!!!
字符串有 Contains 函数 判断 是否包含指定字符串的
{
string BiaoTiAll = mailMessage.Headers.GetHeader("Subject");
string[] arryBiaoTi = BiaoTiAll.Split('?');
string Subject = Encoding.UTF8.GetString(Encoding.GetEncoding("GB2312").GetBytes(arryBiaoTi[3].ToString()));
tnRoot.Text = Subject;
}
else
{}得到 Subject是 6L2s5Y+R77yabHg=