javamail 发送邮件同时带附件和邮件正文问题.

genius131421 2008-09-19 10:38:53
我用javamail做了一个邮件发送的应用,可是当有附件的时候就没有正文了。
代码:<%
//String host = "smtp.qq.com";
String host = "mail.sinosoft.com.cn";
String[] to = request.getParameter("to").split("&");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");
boolean sessionDebug = false;

Properties props = System.getProperties();
Session mailSession = Session.getInstance(props, null);
props.put("mail.smtp.host ", host);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp");

Multipart mp = new MimeMultipart();
MimeBodyPart mbp1 = new MimeBodyPart();
MimeBodyPart mbp2 = new MimeBodyPart();
MimeBodyPart mbp3 = new MimeBodyPart();
FileDataSource fds1 = new FileDataSource(request.getParameter("file1"));
FileDataSource fds2 = new FileDataSource(request.getParameter("file2"));
mbp1.setDataHandler(new DataHandler(fds1));
mbp2.setDataHandler(new DataHandler(fds2));
mbp3.setText(messageText);
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
mp.addBodyPart(mbp3);
mbp1.setFileName(fds1.getName());
mbp2.setFileName(fds2.getName());
mailSession.setDebug(sessionDebug);

Message msg = new MimeMessage(mailSession);

msg.setFrom(new InternetAddress(from));
//InternetAddress[] address = {new InternetAddress(to)};
//msg.setRecipients(Message.RecipientType.TO, address);
InternetAddress[] address = new InternetAddress[to.length];
for(int i=0; i<to.length; i++){
System.out.println(to[i]);
address[i] = new InternetAddress(to[i]);
}
msg.addRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());

//这里这两句只有后写的一句生效。。。
msg.setContent(mp);
msg.setText(messageText);

Transport transport = mailSession.getTransport("smtp");
transport.connect(host, "name", "password");
transport.sendMessage(msg,msg.getAllRecipients());

out.println("Mail was sent to " + to);
out.println(" from " + from);
out.println(" using host " + host + ".");

%>
...全文
328 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
veggiehui 2011-09-05
  • 打赏
  • 举报
回复
加上判断有无附件:
if (this.attachment!=null) {
msg.setContent(mp);
}else{
msg.setContent( message, "text/html;charset=utf-8" );
}

veggiehui 2011-09-05
  • 打赏
  • 举报
回复
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
mp.addBodyPart(mbp3);
mbp1.setFileName(fds1.getName());
mbp2.setFileName(fds2.getName());


后面两句放在前面。
veggiehui 2011-09-05
  • 打赏
  • 举报
回复
//这里这两句只有后写的一句生效。。。
msg.setContent(mp);
msg.setText(messageText);

这样就是只有文本没有附件了么?
yhy1987 2011-09-05
  • 打赏
  • 举报
回复
问题解决了吗?怎么解决的呢?
Kit_LO 2008-09-19
  • 打赏
  • 举报
回复
正在学习中,但我解决不了你的问题,帮你顶

81,114

社区成员

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

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