日期:2014-05-20  浏览次数:20809 次

JAVA中发邮件带附件出现的问题!!
大家好,我是个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");