一、简单测试
-
我们正常发送邮箱需要如下几步:
- 登录qq邮箱。
- 写收件人。
- 邮件主题。
- 邮件正文。
- 发送。
-
编写代码前我们需要先登录qq邮箱,创建授权码,代码中要用
-
打开qq邮箱网址,登录qq邮箱。
-
登录完成后,点击页面上方的设置。
-
设置->账户,往下翻,找到这个设置,进行修改
-
保存好以后,就进行代码环节了。
-
-
代码编写的话大概也是这几步,以下为从QQ邮箱发网易邮箱的测试代码,仔细理解注释:
-
导入依赖
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
-
编写代码
package com.tcc.util; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; /** * @author 宇辰 * 2022/4/22 - 13:30 * * 使用qq邮箱给163邮箱发邮件 */ public class EmailUtil { public static void main(String[] args) { // 新建配置文件,设置参数 Properties properties = new Properties(); // 设置key和val值 properties.setProperty("mail.host","smtp.qq.com"); // 发送邮件,采用的协议 properties.setProperty("mail.transport.protocol","smtp"); // 会话 Session session = Session.getInstance(properties); Transport ts = null; try { // 获取到传输的对象,发送邮件。 ts = session.getTransport(); // 发送邮件之前,校验账号和密码 密码不是qq密码,是邮箱设置的授权码 ts.connect("897113177@qq.com","gziarsrzdumnbahe"); // 构建一封邮件 MimeMessage message = new MimeMessage(session); // 发件人 message.setFrom(new InternetAddress("897113177@qq.com")); // 收件人 // RecipientType.TO:表示收件人 // RecipientType.CC:抄送 // RecipientType.BCC 暗送 message.setRecipient(Message.RecipientType.TO,new InternetAddress("yc897113177@163.com")); //message.setRecipient(Message.RecipientType.CC,new InternetAddress("yc897113177@163.com")); // 主题 val1:主题 message.setSubject("今晚8点沙城等你来战"); // 内容 val1:内容 val2:编码 message.setContent("你好,我系渣渣辉,今晚沙城不见不散","text/html;charset=UTF-8"); // 保存邮件 message.saveChanges(); // 发送邮件 val1:邮件 val2:获得所有收件者(和收件人的数量有关) ts.sendMessage(message,message.getAllRecipients()); } catch (Exception e) { e.printStackTrace(); }finally { if (ts != null){ try { ts.close(); } catch (MessagingException e) { e.printStackTrace(); } } } } }
-
运行main方法,然后打开163邮箱,查看是否收到邮件
-
-
内容不只可以写普通的文本,还可以写HTML标签,测试代码:
package com.tcc.util; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; /** * @author 宇辰 * 2022/4/22 - 13:30 * * 使用qq邮箱给163邮箱发邮件 */ public class EmailUtil { public static void main(String[] args) { // 新建配置文件,设置参数 Properties properties = new Properties(); // 设置key和val值 properties.setProperty("mail.host","smtp.qq.com"); // 发送邮件,采用的协议 properties.setProperty("mail.transport.protocol","smtp"); // 会话 Session session = Session.getInstance(properties); Transport ts = null; try { // 获取到传输的对象,发送邮件。 ts = session.getTransport(); // 发送邮件之前,校验账号和密码 密码不是qq密码,是邮箱设置的授权码 ts.connect("897113177@qq.com","gziarsrzdumnbahe"); // 构建一封邮件 MimeMessage message = new MimeMessage(session); // 发件人 message.setFrom(new InternetAddress("897113177@qq.com")); // 收件人 // RecipientType.TO:表示收件人 // RecipientType.CC:抄送 // RecipientType.BCC 暗送 message.setRecipient(Message.RecipientType.TO,new InternetAddress("yc897113177@163.com")); //message.setRecipient(Message.RecipientType.CC,new InternetAddress("yc897113177@163.com")); // 主题 val1:主题 message.setSubject("今晚8点沙城等你来战"); // 内容 val1:内容 val2:编码 //message.setContent("你好,我系渣渣辉,今晚沙城不见不散","text/html;charset=UTF-8"); //内容里面添加a标签,进行跳转 message.setContent("你好,我系渣渣辉,今晚沙城不见不散,请点击网址打开游戏:<a href='https://baidu.com'>点击跳转百度</a>","text/html;charset=UTF-8"); //保存邮件 message.saveChanges(); // 发送邮件 val1:邮件 val2:获得所有收件者(和收件人的数量有关) ts.sendMessage(message,message.getAllRecipients()); } catch (Exception e) { e.printStackTrace(); }finally { if (ts != null){ try { ts.close(); } catch (MessagingException e) { e.printStackTrace(); } } } } }
-
结果:
-
如果想发附件等其他功能,可以参考:https://blog.youkuaiyun.com/flycp/article/details/106411687
二、项目使用
等待更新…