1 pom文件发添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2 yml配置
spring:
mail:
protocol: smtp
host: smtp.qq.com
port: 465
username: 7******00@qq.com
password: *******
properties:
mail:
smtp:
auth: true
ssl:
enable: true
3 各种发送邮箱形式
@SpringBootTest
public class SpringEmilTest {
@Resource
private JavaMailSender mailSender;
@Resource
private MailProperties mailProperties;
private final static String to = "*********@qq.com";
private final static String cc = "*********@qq.com";
//发送简单文本邮箱
@Test
public void springJavaSendMail() throws Exception {
//不是创建消息对象,是从mailSender对象中,获取 消息对象,Spring已经帮助我们创建完了消息对象
MimeMessage mimeMessage = mailSender.createMimeMessage();
//消息对象的辅助对象
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
//如果 发送邮件的人,每次都变,
String from = mailProperties.getUsername();//"xxxxx@163.com";
String pwd = mailProperties.getPassword();//"xxxxx";
//谁发的邮件
helper.setFrom(from);
//收件人,发送给谁
helper.addTo(to);
//抄送
helper.addCc(cc);
//设置标题
helper.setSubject("纯文本邮件,测试");
//设置邮件内容
helper.setText("简单的一句话:用 java 发送的邮件");
//发送按钮
mailSender.send(mimeMessage);
}
//发送html文本,不带图片
@Test
public void sendSimpleHtmlEmail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(mailProperties.getUsername());
helper.addTo(to);
helper.addCc(cc);
//设置标题
helper.setSubject("带HTML的网页");
//发送用户列表
StringBuilder html = new StringBuilder();
html.append("<h1 style='color:red'>呃呃呃呃呃呃呃呃</h1>");
html.append("<ul>");
html.append("<li>学java</li>");
html.append("<li>学java 发送Email邮件 </li>");
html.append("<li>学java 学费了</li>");
html.append("</ul>");
//设置内容
helper.setText(html.toString(),true);
mailSender.send(mimeMessage);
}
//发送html文本,带网络图片
@Test
public void sendSimpleHtmlEmailAndImg() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(mailProperties.getUsername());
helper.addTo(to);
helper.addCc(cc);
//设置标题
helper.setSubject("带HTML的网页+网络图片");
//发送网页内容
StringBuilder html = new StringBuilder();
html.append("<ul>");
html.append("<h1 style='color:red'>发送html文本,带网络图片</h1>");
html.append("<ul>");
html.append("<li>学java</li>");
html.append("<li>学java 发送Email邮件 </li>");
html.append("<li>学java 学费了</li>");
html.append("</ul>");
html.append("<img src='https://img2.baidu.com/it/u=759913327,516358106&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=625'/>");
//设置内容
helper.setText(html.toString(),true);
mailSender.send(mimeMessage);
}
//发送html文本,带本地图片
@Test
public void sendSimpleHtmlEmailAndImg2() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
//multipart设置为true 表示支持文件上传
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(mailProperties.getUsername());
helper.addTo(to);
helper.addCc(cc);
//设置标题
helper.setSubject("带HTML的网页+本地图片");
//发送网页内容
StringBuilder html = new StringBuilder();
html.append("<ul>");
html.append("<h1 style='color:red'>发送html文本,带网络图片</h1>");
html.append("<ul>");
html.append("<li>学java</li>");
html.append("<li>学java 发送Email邮件 </li>");
html.append("<li>学java 学费了</li>");
html.append("</ul>");
html.append("<img src='https://img2.baidu.com/it/u=759913327,516358106&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=625'/>");
//本地的图片
helper.setText(html.toString(),true);
File file = new File("E://桌面//1111111.jpg");
helper.addInline("ei",file);
mailSender.send(mimeMessage);
}
//发送html文本,带本地图片,带附件
@Test
public void sendSimpleHtmlEmailAndImg2AndAttach() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
//multipart设置为true 表示支持文件上传
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(mailProperties.getUsername());
helper.addTo(to);
helper.addCc(cc);
//设置标题
helper.setSubject("带HTML的网页+本地图片+附件");
//设置内容
String html = "<h1 style='color:red'>测试文字</h1>";
html+="<img src='cid:ei'>";
helper.setText(html,true);
//本地的图片
File img = new File("E://桌面//1111111.jpg");
helper.addInline("ei",img);
//附件
File fu = new File("E://桌面//1111111.jpg");
helper.addAttachment("1111111.jpg",fu);
mailSender.send(mimeMessage);
}
// 工具类
@Resource
EmailUtil emailUtil;
@Test
void utils(){
String html = "<h1 style='color:red'>测试文字</h1>";
html+="<img src='cid:ei'>";
File img = new File("E://桌面//1111111.jpg");
File fu = new File("E://桌面//1111111.jpg");
emailUtil.sendEmail(to,"测试工具类",html,img,fu);
}
}
4 发送邮箱工具类 EmailUtil
@Component
public class EmailUtil {
private final static Logger log = LogManager.getLogger(EmailUtil.class);
@Resource
private JavaMailSender mailSender;
@Resource
private MailProperties mailProperties;
public void sendEmail(String email, String title, String count) {
sendEmail(email, title, count, null);
}
public void sendEmail(String email, String title, String count, File... files) {
MimeMessage msg = mailSender.createMimeMessage();
try {
MimeMessageHelper h = new MimeMessageHelper(msg,true);
h.setFrom(mailProperties.getUsername());
h.addTo(email);
//h.addCc(mailProperties.getUsername());
h.setSubject(title);
h.setText(count,true);
if (files != null && files.length > 0) {
for (File f : files) {
//如果是图片,单独上传显示
if (isImage(f)) {
h.addInline("ei",f);
}
//图片也单独再上传为附件
h.addAttachment(f.getName(), f);
}
}
mailSender.send(msg);
} catch (MessagingException e) {
log.error(e);
}
}
//判断文件是否是图片类型
private boolean isImage(File file) {
try {
Image image = ImageIO.read(file);
return image != null;
} catch (IOException e) {
return false;
}
}
}
5 原生java发送邮件
@SpringBootTest
public class JavasmTest {
@Autowired
NewsService newsService;
@Test
void f1() throws MessagingException {
//发邮件
String account = "*********@163.com";
String pwd = "*********";
//设置请求的头信息
Properties properties = new Properties();
properties.put("mail.transport.protocol","smtp");//设置 连接的协议
properties.put("mail.smtp.host","smtp.163.com");//发送邮件的域名
properties.put("mail.smtp.port",465);//163邮箱的端口号,如果不设置默认是25
properties.put("mail.smtp.auth","true");//服务器认证
properties.put("mail.smtp.ssl.enable","true");//开始ssl安全连接
//控制台显示日志
properties.put("mail.debug","true");
//发送给谁
String to = "*********@126.com";
//抄送邮箱
String cc = "*********@163.com";
//创建会话对象
Session session = Session.getDefaultInstance(properties);
//创建Message对象
MimeMessage mimeMessage = new MimeMessage(session);
//发送邮箱
mimeMessage.setFrom(account);
//发送给谁
mimeMessage.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
//抄送给谁
mimeMessage.addRecipient(Message.RecipientType.CC,new InternetAddress(cc));
//发送的邮件内容是什么
mimeMessage.setSubject("我是邮箱的标题,今日新闻");
//内容
List<NewsModel> list = newsService.syncNews();
//可以加html标签
mimeMessage.setText(list.toString());
//Transport对象
Transport transport = session.getTransport();
//输入用户名密码,连接服务器
transport.connect(account,pwd);
//发送的动作
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
}
}