您的位置:首页 > 大数据 > 人工智能

Email小案例改进版——解决带附件不显示邮件正文问题

2017-04-08 11:20 507 查看
import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.Transport;

public class email {
public void send(String emailHost,
//smtp服务器
        String toEmail,
//收件人邮箱
        String additionalPath,
//附件路径
        String additionalName,
//附件名称
        String myEmailUser,
//发件邮箱
        String myEmailPwd,
//密码
        String emailTitle,
//邮件标题
        String context
){ //内容
   Properties props = new Properties();
   props.put("mail.smtp.emailHost",emailHost);
   props.put("mail.smtp.auth", "true");     
   props.put("mail.smtp.port", "587");//qq专用其它不需要   
   
   Session session = Session.getDefaultInstance(props);
   session.setDebug(true);
   MimeMessage message = new MimeMessage(session);
   try {
           
       message.setFrom(new InternetAddress(myEmailUser));// 加载发件人地址
           
       message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));// 加载收件人地址
           
       message.setSubject(emailTitle);// 加载标题
       
       Multipart multipart = new MimeMultipart();// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件         
       BodyPart contentPart = new MimeBodyPart();
       contentPart.setText(context);// 设置邮件的文本内容
       multipart.addBodyPart(contentPart);
       
       BodyPart messageBodyPart = new MimeBodyPart();// 添加附件
       DataSource source = new FileDataSource(additionalPath);
       
       messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的内容
       sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
       messageBodyPart.setFileName("=?GBK?B?"+enc.encode(additionalName.getBytes())+"?=");
       multipart.addBodyPart(messageBodyPart);
       
       message.setContent(multipart);//将multipart对象放到message中
           
       message.saveChanges();// 保存邮件
           
       Transport transport = session.getTransport("smtp");// 发送邮件
           
       transport.connect(emailHost, myEmailUser, myEmailPwd);// 连接服务器的邮箱
           
       transport.sendMessage(message, message.getAllRecipients());// 把邮件发送出去
       transport.close();
   } catch (Exception e) {
       e.printStackTrace();
   }
}

public static void main(String[] args) {
email email = new email();
   
email.send("smtp.qq.com",
"xxxxxxxxx@qq.com",
"E:\\text.txt",
"随便什么鬼",
"xxxxxxxxx@qq.com",
"xxxxxxxxxrqudbgie",//qq为开启smtp给的密钥,其它为密码
"测试邮件",
"我的最新测试邮件!!"
    );
   
   }
}     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐