首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java发送带附件的邮件,为啥邮箱内容直接显示的附件里面的内容?

2013-07-11 
java发送带附件的邮件,为何邮箱内容直接显示的附件里面的内容?。public class Test1 {/* * from:发件人 pas

java发送带附件的邮件,为何邮箱内容直接显示的附件里面的内容?。
public class Test1 {
/*
 * from:发件人 password:发件密码 to: 收件人 subject:主题messageText:内容 Server:smtp服务器地址
 */
// 文本邮件
public void sendTextMail(String from, String to, String subject,
String messageText, String password, String Server)
throws MessagingException, javax.mail.MessagingException, ParseException, UnsupportedEncodingException {
// 建立邮件会话
Properties pro = new Properties();
pro.put("mail.smtp.host", Server);
pro.put("mail.smtp.auth", "true");
Session sess = Session.getInstance(pro);
sess.setDebug(true);
// 新建一个消息对象
MimeMessage message = new MimeMessage(sess);
// 附件
MimeMultipart mp=new MimeMultipart("related");    //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
MimeBodyPart  bp = new MimeBodyPart();//正文
      FileDataSource fileds = new FileDataSource("D:\\11.txt");
      bp.setDataHandler(new DataHandler(fileds));
      bp.setFileName(MimeUtility.encodeWord(fileds.getName(),"GB2312",null));//设置附件文件名
      mp.addBodyPart(bp);//////////////////////////////////////////
// 设置发件人
InternetAddress from_mail = new InternetAddress(from);
message.setFrom(from_mail);
// 设置收件人
InternetAddress to_mail = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, to_mail);
// 设置主题
message.setSubject(subject);
// 设置内容
message.setText(messageText);
//集成附件
         message.setContent(mp);////////////////////////////////////////////
// 设置发送时间
Date d = new Date();
message.setSentDate(d);

// 发送邮件
message.saveChanges(); // 保证报头域同会话内容保持一致
Transport transport = sess.getTransport("smtp");
transport.connect(Server, from, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
public static void main(String args[]) throws javax.mail.MessagingException, ParseException, UnsupportedEncodingException {
Test1 send = new Test1();
try {
send.sendTextMail("454700515@qq.com", "1124451928@qq.com",
"标题", "这是内容哈", "密码", "smtp.qq.com");
} catch (MessagingException e) {
e.printStackTrace();


}

}
[解决办法]
// 新建一个消息对象
MimeMessage message = new MimeMessage(sess);
// create the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(messageText);
// create the second message part
// MimeBodyPart mbp2 = new MimeBodyPart();
// 附件文件大小大于18.53M
// FileDataSource fds = new FileDataSource("D:\\d.java");
// mbp2.setDataHandler(new DataHandler(fds));
// mbp2.setFileName(MimeUtility.encodeText(fds.getName()));// 设置附件文件名 ,
// "GB2312",null
// create the Multipart and its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
// mp.addBodyPart(mbp2);
// 设置发件人
InternetAddress from_mail = new InternetAddress(from);
message.setFrom(from_mail);
// 设置显示发件人的姓名,而不是显示邮箱号码(??????????????????????????)
// message.setFrom(new InternetAddress(""" +
// MimeUtility.encodeText("王帆") + "" <" + from_mail + ">"));
// 设置收件人 1个
// InternetAddress to_mail = new InternetAddress(to);
// message.setRecipient(RecipientType.TO, to_mail);
// 设置收件人多个
message.setRecipients(RecipientType.TO,
InternetAddress.parse(Test1.parseToAddress(to)));
// 设置邮件回复对象
message.setReplyTo(new Address[] { new InternetAddress(
"2224451928@qq.com") });
// 设置主题
message.setSubject(subject);
// 设置内容
message.setText(messageText);
// 设置发送时间
Date d = new Date();
message.setSentDate(d);
// 集成附件 // add the Multipart to the message
message.setContent(mp);

热点排行