`java 发送邮件
package com.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendEmailByQQ {
public static void sendEmail(String email, String emailMsg ) throws AddressException, MessagingException, Exception {
/*
* 1、创建连接对象
* 2、创建邮件对象
* 3、发送邮件
*/
// 1.创建一个程序与邮件服务器会话对象 Session
Properties props= new Properties();
props.put("mail.transport.protocol" , "smtp");
props.put("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", 465);
props.put("mail.smtp.ssl.enable", "true");
// 验证账号及密码,密码需要是第三方授权码
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xxxxx.com", "第三方授权码");//个人邮箱是第三方授权码 企业邮箱就是直接输入密码password
}
};
Session session = Session.getInstance(props, auth);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
Transport ts = session.getTransport();
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
// 设置发送者
message.setFrom(new InternetAddress("xxxxx.com"));
// 设置发送方式与接收者
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email));
// 设置主题
message.setSubject("邮件发送测试");
// 设置内容
StringBuilder emailContent= new StringBuilder("<!DOCTYPE html>\r\n" +
"<html>\r\n" +
"<head>\r\n" +
" <meta charset='UTF-8'>\r\n" +
" <title>快来买桃子</title>\r\n" +
" <style type='text/css'>\r\n" +
" .container {\r\n" +
" font-family: 'Microsoft YaHei';\r\n" +
" width: 600px;\r\n" +
" margin: 0 auto;\r\n" +
" padding: 8px;\r\n" +
" border: 3px dashed #db303f;\r\n" +
" border-radius: 6px;\r\n" +
" }\r\n" +
"\r\n" +
" .title {\r\n" +
" text-align: center;\r\n" +
" color: #db303f;\r\n" +
" }\r\n" +
"\r\n" +
" .content {\r\n" +
" text-align: justify;\r\n" +
" color: #717273;\r\n" +
" font-weight: 600;\r\n" +
" }\r\n" +
" .list {\r\n" +
" list-style: none;\r\n" +
" }\r\n" +
" footer {\r\n" +
" text-align: right;\r\n" +
" color: #db303f;\r\n" +
" font-weight: 600;\r\n" +
" font-size: 18px;\r\n" +
" }\r\n" +
"\r\n" +
"</style>\r\n" +
"</head>\r\n" +
"<body>\r\n" +
"<div class='container'><h2 class='title'>简历</h2>\r\n" +
" <p class='content'>简历信息。</p >\r\n" +
" <img src='cid:attach' style='width: 40px;height: 40px;'/>\r\n" +
" <div class=\"list\">\r\n" +
" <span>真实姓名 | 女 | 25岁</span>\r\n" +
" <span>深圳-南山区 | 3年工作经验</span>\r\n" +
" <span>1564515656</span>\r\n" +
" <span>2116165</span>\r\n" +
" <span>状态</span>\r\n" +
" <span>深圳</span>\r\n" +
" <span>党员</span>\r\n" +
" <span>嘿嘿</span>\r\n" +
" </div>\r\n" +
" <footer>联系人:11110000</footer>\r\n" +
"</div>\r\n" +
"</body>\r\n" +
"</html>");
// 5. 创建图片“节点”
MimeBodyPart image = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(new File("E:\\1.jpg"))); // 读取本地文件
image.setDataHandler(dh);
// image.setHeader("Content-ID","<attach>");
// image.setHeader("Content-Type", "image/png");
image.setDisposition(MimeBodyPart.INLINE);
image.setContentID("attach"); // 为“节点”设置一个唯一编号(在文本“节点”将引用该ID)
// image.setFileName("attach.png");
MimeBodyPart text = new MimeBodyPart();
text.setContent(emailContent.toString(), "text/html;charset=UTF-8");
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related"); // 关联关系
message.setContent(mm);
message.saveChanges();
// message.writeTo(new FileOutputStream("E:\\ImageMail.eml"));
// 3.创建 Transport用于将邮件发送
ts.send(message,message.getAllRecipients());
ts.close();
}
}
测试调用
package com.utils;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
public class TestEmailByQQ {
public static void main(String[] args) throws AddressException,MessagingException, Exception {
SendEmailByQQ.sendEmail("接受人邮箱", "测试");
}
}
结果发送显示
如何设置个人邮箱第三方授权码(以qq邮箱为例 只有个人邮箱才有 企业邮箱没有第三方授权码 只需要密码就行)