JAVA中发邮件带附件出现的问题!!

hancg1314 2009-01-03 08:59:23
大家好,我是个JAVA初学者,这两天在做一个发邮件的功能,不带附件发送的时候显示正常,带附件发送的时候就会出问题,请各位大侠帮忙下,像这样
<< HEAD>
<< META content="MSHTML 6.00.2900.5694" name=GENERATOR> < /HEAD>
<< BODY> < FONT size=3> 您好:< BR> 祝工作顺利。< BR> < BR> < /FONT> < FONT size=2> hancg< BR> 2009-01-03< BR> < BR> < FONT color=#0033cc> 北京六合华大基因科技股份有限公司北京测序部 < /FONT> < BR> 散样测序: service@genomics.org.cn < BR> 引物合成: order@genomics.org.cn < BR> 电话:86-10-80485559 < BR> 传真:86-10-80485999 < BR> 地 址:北京顺义区空港工业园B区6号楼 < BR> 网 站: < A href="http://www.genomics.com.cn/"> www.genomics.com.cn < /A> < BR> < BR> < /FONT> < /BODY>
带附件发送和不带附件发送用的是不同的方法 是不是我的方法有问题 带附件的方法代码如下:
public boolean sendermail(String smtpServer, String[] to, String[] cc,
String[] bcc, String from, String subject, String body,
String username, String password,String name){
//获得了邮件服务器信息
properties.put("mail.smtp.host", smtpServer);
//设置发送授权认证为true的缘故,给外部邮箱发信用
properties.put("mail.smtp.auth", String.valueOf(true));
//获得了邮件授权
MailAuthentication ma = new MailAuthentication(username, password);
//根据邮件会话属性和密码验证器构造一个发送邮件的session
Session session = Session.getInstance(properties, ma);
//在发送邮件过程中监控mail命令的话
// session.setDebug(true);
//根据session创建一个邮件消息对象
Message msg = new MimeMessage(session);
boolean flag=false;
try {
//设置邮件消息的发送者
setFromAddress(msg, from);
//设置邮件消息的接收者
setAddress(msg, to, Message.RecipientType.TO);
setAddress(msg, cc, Message.RecipientType.CC);
setAddress(msg, bcc, Message.RecipientType.BCC);
//设置邮件消息的主题
msg.setSubject(subject);
//设置邮件消息的主要内容
msg.setText(body);
msg.setHeader("Content-Type","text/html; charset=GBK");
//设置发送收条
// msg.addHeader("Disposition-Notification-To", from);
//设置邮件消息发送的时间
msg.setSentDate(new Date());
// 发送附件
BodyPart mdp = new MimeBodyPart();
Multipart mm = new MimeMultipart();
BodyPart part = new MimeBodyPart();
part.setText(body);
mm.addBodyPart(part);
FileDataSource fds = new FileDataSource(name);
//如果附件大于10M则不发送附件
//**********************************************
long iFileLen=fds.getFile().length();

System.out.println("FileSize=" + iFileLen);
if(iFileLen<20480000l){
System.out.println(name);
if (!fds.getFile().exists()) {
System.out.println("未发现文件: " + name);
return false;
}
DataHandler dh = new DataHandler(fds);
String names[]=name.split("/");
String filename=names[names.length-1];
mdp.setFileName(filename);// 可以和原文件名不一致
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
msg.setContent(mm);// 把mm作为消息对象的内容
msg.saveChanges();
mdp.setDescription(body);
msg.setContent(mm);
this.setFlagAnnex(false);
}else{
this.setFlagAnnex(true);
return true;
}
//**********************************************
//使用Transport这个类的静态方法send()来发送消息
Transport.send(msg);
flag=true;
System.out.println("发送完成");
} catch (AddressException ex) {
System.out.println("Message success");
ex.printStackTrace();
System.out.println("请确认发送人地址格式");
} catch (MessagingException ex) {
System.out.println("Messaging fail");
ex.printStackTrace();
System.out.println("信息格式错误");
}
return flag;
}
请大家多多帮忙
...全文
185 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
glglglglglgllll 2009-01-04
  • 打赏
  • 举报
回复
hancg1314 2009-01-03
  • 打赏
  • 举报
回复
可是我使用不带附件的方法()传递就没问题 使用带附件的传递就会出现上面的现象 不是邮箱的问题
fuyueyue 2009-01-03
  • 打赏
  • 举报
回复
学习下
hejia12 2009-01-03
  • 打赏
  • 举报
回复
你可能要查一下一些设置,因为你这个邮件的格式是html的。但实际上你的邮箱却不是这样解释的
hancg1314 2009-01-03
  • 打赏
  • 举报
回复
没报错误 但是邮件的内容显示有问题 显示的是
< < HEAD>
< < META content="MSHTML 6.00.2900.5694" name=GENERATOR> < /HEAD>
< < BODY> < FONT size=3> 您好: < BR> 祝工作顺利。 < BR> < BR> < /FONT> < FONT size=2> hancg < BR> 2009-01-03 < BR> < BR> < FONT color=#0033cc> 北京六合华大基因科技股份有限公司北京测序部 < /FONT> < BR> 散样测序: service@genomics.org.cn < BR> 引物合成: order@genomics.org.cn < BR> 电话:86-10-80485559 < BR> 传真:86-10-80485999 < BR> 地 址:北京顺义区空港工业园B区6号楼 < BR> 网 站: < A href="http://www.genomics.com.cn/"> www.genomics.com.cn < /A> < BR> < BR> < /FONT> < /BODY>
但是应该没有这些html标签才对的
changjiangzhibin 2009-01-03
  • 打赏
  • 举报
回复
报什么错误,
找不到连接,还是发送失败

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧