package com.shineyue.cn.wxzj.common.utils;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.security.GeneralSecurityException;
import java.util.Properties;
//教程:https://blog.csdn.net/qq_27566167/article/details/126461862
public class SendQQEmail {
public static void main(String[] args) throws GeneralSecurityException, MessagingException {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); //设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
prop.setProperty("mail.mime.charset", "UTF-8"); //设置邮件编码,这个需要指定,如果不指定,会出现tcmime.2648.2742.2958.bin乱码
// QQ邮箱设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
//1、创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//传入发件人的姓名和授权码 https://jingyan.baidu.com/article/a3a3f8111733f18da3eb8a53.html(教程)
return new PasswordAuthentication("13213312@qq.com","bkzqanmzszqudijb");
}
});
//2、通过session获取transport对象
Transport transport = session.getTransport();
//3、通过transport对象邮箱用户名和授权码连接邮箱服务器
transport.connect("smtp.qq.com","13213312@qq.com","bkzqanmzszqudijb");
//4、创建邮件,传入session对象
MimeMessage mimeMessage = qqEmail(session);
//5、发送邮件
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
//6、关闭连接
transport.close();
}
public static MimeMessage qqEmail(Session session) throws MessagingException {
//消息的固定信息
MimeMessage mimeMessage = new MimeMessage(session);
//发件人
mimeMessage.setFrom(new InternetAddress("13213312@qq.com"));
//收件人
mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("1321331212asdsad@foxmail.com"));
//邮件标题
mimeMessage.setSubject("king-java-Test");
//邮件内容
//准备图片数据
MimeBodyPart image = new MimeBodyPart();
//图片的路径地址
DataHandler handler = new DataHandler(new FileDataSource("C:\\Users\\admin\\Desktop\\tup\\wo.jpg"));
image.setDataHandler(handler);
image.setContentID("wo.jpg"); //设置图片id id要中文,不然乱码
//准备文本 html 格式
MimeBodyPart text = new MimeBodyPart();
String html="<div>尊敬的领导:</div>";
String html2="<div> 您好!由于本人。。。。</div>";
String html3="<img src='cid:wo.jpg'>";
text.setContent(html+html2+html3,
"text/html;charset=utf-8");
// 附件
MimeBodyPart appendix = new MimeBodyPart();
//附件路径
appendix.setDataHandler(new DataHandler(new FileDataSource("C:\\Users\\admin\\Desktop\\tup\\wo.jpg")));
//附件名称 附件全部名称 ,要是 txt,就是 book.txt 格式
appendix.setFileName("wo.jpg");
//拼装邮件正文
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(image);
mimeMultipart.addBodyPart(text);
mimeMultipart.setSubType("related");//文本和图片内嵌成功
//将拼装好的正文内容设置为主体
MimeBodyPart contentText = new MimeBodyPart();
contentText.setContent(mimeMultipart);
//拼接附件
MimeMultipart allFile = new MimeMultipart();
allFile.addBodyPart(appendix);//附件
allFile.addBodyPart(contentText);//正文
allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed
//放到Message消息中
mimeMessage.setContent(allFile);
mimeMessage.saveChanges();//保存修改
return mimeMessage;
}
}
这里是引用:https://blog.csdn.net/qq_27566167/article/details/126461862