两个关于javamail的问题

zhoyan 2007-10-19 12:55:34
第一个问题,接收邮件时怎么判断mail的内容为空?
我写了代码如下:

Message msg=receiveMsg();//从服务器接收message
if(msg.isMimeType("text/plain")){
letter.setContent((String)msg.getContent());
}
else if(msg.isMimeType("multipart/*")){
Multipart multipart = (Multipart)msg.getContent();
if(multipart != null){
for(int i=0;i<multipart.getCount();i++){
//TODO: do something. }

}
}
}

如果接收到的邮件为空的话,执行multipart.getCount()会抛异常,但multipart和msg却都不为空,那么该如何判断空内容的邮件呢?

第二个问题,如何解决邮件附件文件名的乱码问题?
...全文
82 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
karlpan01 2007-10-19
帮顶!
回复
sunyujia 2007-10-19
我的邮件程序附件名不乱码截断程序给你
for (int i = 0; i < fileAttachment.size(); i++) {// 向Multipart添加附件
FileDataSource fds = (FileDataSource) fileAttachment.get(i);
MimeBodyPart attachFile = new MimeBodyPart();
attachFile.setDataHandler(new DataHandler(fds));
if (MailToolUtil.isHasContainStr(fds.getName()))
attachFile.setFileName("=?GBK?B?"
+ MailToolUtil.base64Encoder(fds.getName())
+ "?=");// 解决附件名中文乱码
else
attachFile.setFileName(fds.getName());
mp.addBodyPart(attachFile);
}
/**
* 是否还有中文字符串
*
* @param str
* @return
*/
public static boolean isHasContainStr(String str) {
if (str == null || str.length() == gbkToIso(str).length())
return false;
return true;
}
/**
* 将GBK转化为ISO-8859-1
*
* @param para
* @return
*/
public static String gbkToIso(String para) {
try {
return new String(para.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
return "";
} catch (Exception e) {
return "";
}
}
/**
* BASE64Encoder编码
*
* @param str
* @return
*/
public static String base64Encoder(String str) {
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
return enc.encode(str.getBytes());
}
回复
zhoyan 2007-10-19
多谢大家顶
回复
zhonghuabao 2007-10-19
帮顶接分!~JF
回复
大河V5 2007-10-19
JF
回复
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2007-10-19 12:55
社区公告
暂无公告