解决javamail IMAP协议报错:Unable to load BODYSTRUCTURE

在QQ邮箱上实验IMAP时,又遭遇了以下错误:
Unable to load BODYSTRUCTURE

Debug输出如下:

A67 FETCH 23 (BODYSTRUCTURE)
* 23 FETCH (BODYSTRUCTURE (("TEXT" "HTML" ("CHARSET" "gb18030") NIL NIL NIL 2433 24 NIL NIL NIL)("MESSAGE" "RFC822" ("CHARSET" "gb18030" "NAME" "mail.eml") NIL NIL "8BIT" 498 NIL NIL NIL) "REPORT" ("BOUNDARY" "QQ_MAIL_RETURN") NIL NIL))
A67 OK FETCH completed


登陆QQ邮箱查看这封信时,发现是QQ发送失败产生的退信。
通过显示邮件原文,发现邮件头如下:

X-QQ-mid: @bizmail11t1309337485t395253
Message-Id:
From: "PostMaster" To: w@c527.com
Date: Wed, 29 Jun 2011 16:51:27 +0800
Subject: 来自c527.com的退信
Content-type: multipart/report; report-type=delivery-status; boundary=QQ_MAIL_RETURN
Auto-Submitted: auto-generated
X-QQ-MAIL-TYPE: bulletin
X-QQ-STYLE: 5


原来是QQ自己扩充了multipart格式
[b]Content-type: multipart/report; report-type=delivery-status; boundary=QQ_MAIL_RETURN[/b]
造成JavaMail构造BODYSTRUCTURE时,发生错误。

既然知道原因了,那就把这封信转换成MimeMessage,应该会解决问题

MimeMessage cmsg = new MimeMessage((MimeMessage) imapMessage);


果然转换为MimeMessage后,可以顺利读取BODYSTRUCTURE了
但造成的后果是,cmsg从服务器断开了
要对这封信进行管理的话,只能去操作imapMessage。

转载:http://www.spwei.com/archives/2011/127.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值