使用javax.mail发送邮件(二)--带附件邮件
package SendEmailTest;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.File;
import java.util.Properties;
/**
* Created by mi on 2017/5/12.
*/
public class SendEmailWithAttach {
public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle, String mailContent) {
//加载一个配置文件
Properties props = new Properties();
// smtp:简单邮件传输协议
// 设置邮件服务器主机名
props.put("mail.smtp.host", "smtp.163.com");
//发送服务器需要通过验证
props.put("mail.smtp.auth", "true");
//设置环境信息
Session session = Session.getInstance(props);//根据属性新建一个邮件会话
session.setDebug(true); //会打印一些调试信息。
//由邮件会话新建一个消息对象
MimeMessage message = new MimeMessage(session);
Transport transport = null;
//设置邮件内容
try {
message.setFrom(new InternetAddress(fromMail));//设置发件人的地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//设置收件人,并设置其接收类型为TO
message.setSubject(mailTitle);//设置标题
//设置信件内容
//因为需要加载附件,需要装载多个主体部件
MimeMultipart partList = new MimeMultipart("mixed");
message.setContent(partList);
//创建一个部件
MimeBodyPart part1 = new MimeBodyPart();
part1.setText(mailContent);
partList.addBodyPart(part1);
//再创建一个部件
MimeBodyPart part2 = new MimeBodyPart();
// 添加附件的内容
DataSource source = new FileDataSource("D:/export.xlsx");
part2.setDataHandler(new DataHandler(source));
//指定附件的名字,使用MimeUtility.encode()对中文进行编码
part2.setFileName(MimeUtility.encodeText("数据报表.xlsx")); //设置的这个新的名字一定要带有后缀格式啊.xlsx!!!
partList.addBodyPart(part2);
//发送邮件
transport = session.getTransport("smtp");
transport.connect(user, password);
transport.sendMessage(message, message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
}catch (Exception e) {
e.printStackTrace();
}finally {
try{
transport.close(); //这个最好放到finally中哎
}catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try{
sendMail("xxx@163.com", "xxx@163.com", "xxx",
"xxx@qq.com",
"Java Mail 正式邮件",
"这是一个特别重要的邮件:<b>超级超级重要</b>");
}catch (Exception e) {
e.printStackTrace();
}
}
}
That's all. Thank U~
网友评论