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

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 MessagingExceptionjavax.mail.MessagingExceptionParseException, 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();