JavaMail API
第三步、选择版本,选择 ‘Mail1.4.7’版本
注意:这里选择版本很重要,如果选错可能会出问题
如果使用 eclipse开发工具则选择1.6.0版本
如果使用 IDEA开发工具则选择1.4.7版本
直接上教程
第一步、进入官网:https://mvnrepository.com/
第二步、在官网里搜索 Mail
第三、点击第一条进入
第四步、找到你要的版本
注意:这里选择版本很重要,如果选错可能会出问题
如果使用 eclipse开发工具则选择1.6.0版本
如果使用 IDEA开发工具则选择1.4.7版本
第五步、点击版本 1.4.7进入
第六步、复制
com.sun.mail
javax.mail
1.6.2
javax.mail
javax.mail-api
1.4.7
第七步、打开Maven项目,找到pom.xml,然后复制粘贴下去,在pom.xml刷新一下就好了
1) 首先开启 邮箱的 SMTP 服务
第一步
第二步
第三步
第四步、往下拉找到 SMTP服务,我这里已经开启了
第五步、进入‘管理服务’
第六步、找到 安全设置
第七、知道 SMTP 服务
第八、开启授权码
注意:生成授权码之后,一定要保存好,还有不要被 ’有心人’知道,这个码很重要
如果被‘有心人’得到,可能会通过发邮箱的方式进行诈骗,诈骗亲朋好友
还有,如果不想用了,就关闭服务 ‘不给有心人可乘的机会’ 或者在授权管理那里把生成的授权码停用
总之,授权码,一定要保管妥当
2)编写代码
package cms.project.dom.util;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
/***
* @Date(时间)2023-05-12
* @Author xx
*
*
*
* 发送邮件
*/
public class Email_Code {
/**
* 发件⼈邮箱地址
*/
private static final String SEND_ACCOUNT = "[email protected]"; //QQ邮箱地址
/**
* 发件⼈邮箱密码 - 登录邮件开启 SMTP 服务后,邮件服务商⽣成的“授权码”
*/
private static final String SEND_PASSWORD = "xx"; //授权码
/**
* 发件⼈SMTP服务器地址,⼀般的格式为:smtp.xxx.com,其中xxx为邮件服务商名称
*/
private static final String SMTP_HOST = "smtp.qq.com";
/**
* 收件⼈邮箱地址
*/
private static final String RECEIVE_ACCOUNT = "[email protected]"; //收件人的QQ邮箱地址
//发件人名称
private static final String staff_name = "辉哥"; //你的名字
//收件人姓名
private static final String name = "小美"; //你朋友的名字
//发送的主题
private static final String ZHUTI = "我爱你"; //主题
//测试一下
public static void main(String[] args) throws Exception {
// 参数配置,⽤于连接邮件服务器
Properties props = new Properties();
// 使⽤协议
props.setProperty("mail.transport.protocol", "smtp");
// 发件⼈邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.host", SMTP_HOST);
// 需要请求认证
props.setProperty("mail.smtp.auth", "true");
// 创建会话对象,⽤于与邮箱服务器交互
Session session = Session.getInstance(props);
// 设置为debug模式,在控制台中可以查看详细的发送⽇志
session.setDebug(true);
// 创建⼀封邮件
MimeMessage message = createMimeMessage(session, SEND_ACCOUNT, RECEIVE_ACCOUNT,name,ZHUTI,staff_name);
// 根据 Session 获取邮件传输对象
Transport transport = session.getTransport();
// 连接邮件服务器
transport.connect(SEND_ACCOUNT, SEND_PASSWORD);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
}
/**
* 创建⼀封简单邮件
*
* @param session
* @param fromAccount
* @param toAccount
* @return
* @throws Exception
*/
public static MimeMessage createMimeMessage(Session session, String fromAccount, String toAccount,String name,String ZHUTI,String staff_name)
throws Exception {
// 1.创建邮件对象
MimeMessage message = new MimeMessage(session);
// 2.设置发件⼈,其中 InternetAddress 有三个参数,分别为:邮箱,显示的昵称,昵称的字符集编码
message.setFrom(new InternetAddress(fromAccount, staff_name, "UTF-8"));
// 3.设置收件⼈ - MimeMessage.RecipientType.TO
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toAccount ,name, "UTF-8"));
// 7.设置邮件主题
message.setSubject("会飞的鸟","UTF-8");
// 8.设置邮件正⽂内容,指定格式为HTML格式
message.setContent(ZHUTI, "text/html;charset=UTF-8");
// 9.设置显示发件时间
message.setSentDate(new Date());
// 10.保存设置
message.saveChanges();
return message;
}
}
3)封装一下Email_Code类,调用时,更简洁
package cms.project.dom.util;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import java.util.Random;
import static cms.project.dom.util.Email_Code.createMimeMessage;
/***
* @Date(时间)2023-05-13
* @Author 半杯可可
*
*
*
* 邮箱发送封装
*/
public class Mail {
/***
*
* @param EMAIL 发件人邮箱地址
* @param AUTHORIZECODE 授权码
* @param Verify_NAME 发件标题
*/
public static void Mail_Code (String EMAIL,String AUTHORIZECODE,String Verify_NAME){
//发送邮箱验证
/**
* 发件⼈邮箱地址
*/
String SEND_ACCOUNT =EMAIL ;
/**
* 发件⼈邮箱密码 - 登录邮件开启 SMTP 服务后,邮件服务商⽣成的“授权码”
*/
String SEND_PASSWORD = AUTHORIZECODE;//授权码
/**
* 发件⼈SMTP服务器地址,⼀般的格式为:smtp.xxx.com,其中xxx为邮件服务商名称
*/
String SMTP_HOST = "smtp.qq.com";
/**
* 收件⼈邮箱地址
* [email protected]
*/
String RECEIVE_ACCOUNT = EMAIL;
//发件标题,'如:校园论坛'
String Verify= Verify_NAME;
//收件人姓名 ,如‘张三’
String NAME = EMAIL+"用户";
//随机生成验证码
Random random = new Random();
int randomNumber = random.nextInt(900000) + 100000;
String EM_Code = String.valueOf(randomNumber );
//发送的主题
String ZHUTI = "校园论坛验证码:"+EM_Code;
// 参数配置,⽤于连接邮件服务器
Properties props = new Properties();
// 使⽤协议
props.setProperty("mail.transport.protocol", "smtp");
// 发件⼈邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.host", SMTP_HOST);
// 需要请求认证
props.setProperty("mail.smtp.auth", "true");
// 创建会话对象,⽤于与邮箱服务器交互
Session sessions = Session.getInstance(props);
// 设置为debug模式,在控制台中可以查看详细的发送⽇志
sessions.setDebug(true);
try {
//创建一封邮件
MimeMessage message = createMimeMessage(sessions, SEND_ACCOUNT, RECEIVE_ACCOUNT,NAME,ZHUTI,Verify);
// 根据 Session 获取邮件传输对象
Transport transport = sessions.getTransport();
// 连接邮件服务器
transport.connect(SEND_ACCOUNT, SEND_PASSWORD);
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
4)测试一下
public static void main(String[] args) {
Mail.Mail_Code("[email protected]","输入授权码","校园论坛");
}
5)测试结果
我这里发送邮件,是发送验证码,大家可以举一反三,可以拿来发送信息等操作
半杯不啰嗦,就写到这里了,希望得到帮助的伙伴,一键三连!