JavaMail发送邮件
失落的叶 人气:0用的qq邮箱,需要去邮箱设置那边开一下stmp服务啥的获得下面要用到的密码,具体开服务自己百度,这边不截图了。
代码如下:导包和工具类,可用!
一、导这个包
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.5.0-b01</version> </dependency>
二、工具类封装成对象
import lombok.Data; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MailHelper { /** * 邮件服务器主机名。 */ private static String HOST_NAME; private String sendMailUrl ; private String receiveMailUrl; /** * IMAP/SMTP服务的密码 去qq邮箱开的。 几个月前的失效了还是蛮奇怪的 2021年8月5日21:33:36 */ private String servicePassword; static { //默认直接qq的吧 HOST_NAME = "smtp.qq.com"; } public MailHelper(String sendMailUrl,String receiveMailUrl,String servicePassword){ this.sendMailUrl=sendMailUrl; this.receiveMailUrl=receiveMailUrl; this.servicePassword=servicePassword; } public void sendSimpleMail(Mail mail) throws Exception { Properties prop = new Properties(); 设置邮件服务器主机名 prop.setProperty("mail.host", "smtp.qq.com"); // 发送邮件协议名称 prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); // 使用JavaMail发送邮件的5个步骤 // 1、创建session 根据配置创建会话对象, 用于和邮件服务器交互 Session session = Session.getInstance(prop); // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); // 2、通过session得到transport对象 Transport ts = session.getTransport(); // 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 // 注:这边host必须填写smtp.qq.com // 而不是你qq邮箱账号如1741049@qq.com,否则报错host名unkonwn。 // Host:邮件服务器主机名 ts.connect(HOST_NAME, receiveMailUrl, servicePassword); // 4、创建邮件 Message message = createSimpleMail(session, mail.getTitle(), mail.getContent()); // 5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } private MimeMessage createSimpleMail(Session session, String title, String content) throws Exception { // 创建邮件对象 MimeMessage message = new MimeMessage(session); // 指明邮件的发件人 message.setFrom(new InternetAddress(receiveMailUrl)); // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailUrl)); // 邮件的标题 message.setSubject(title); // 邮件的文本内容 message.setContent(content, "text/html;charset=UTF-8"); // 返回创建好的邮件对象 return message; } @Data public static class Mail{ private String title; /** * 正文 */ private String content; public Mail(){ } public Mail(String title,String content){ this.title=title; this.content=content; } } }
测试类:
package com.forever.junittest; import com.forever.gitfund.util.MailHelper; import com.forever.gitfund.util.MailHelper.Mail; import org.junit.Test; public class TestMailHelper { @Test public void test() throws Exception { String qq = "xx@qq.com"; String send = qq; MailHelper mailHelper = new MailHelper(qq,send,"xxxxx"); Mail mail = new Mail(); String title = "我的第一封邮件"; String content = "这是我的第一封邮件 from idea"; mail.setTitle(title); mail.setContent(content); mailHelper.sendSimpleMail(mail); } }
加载全部内容