一、下载Mail jar包
java Mail jar包 下载地址 https://www.oracle.com/ 下面讲解如何在Oracle网找到JavaMail jar 包 第一步、就是复制粘贴我上面的链接进入Oracle网 第二步、点开搜索输入JavaMail API第二步、点击进入 DOWNLOAD
第三步、选择版本,选择 ‘Mail1.4.7’版本
第四步、下载注意:这里选择版本很重要,如果选错可能会出问题
如果使用 eclipse开发工具则选择1.6.0版本
如果使用 IDEA开发工具则选择1.4.7版本
Maven项目如何获取Mail jar包?
直接上教程
第一步、进入官网:https://mvnrepository.com/
第二步、在官网里搜索 Mail
第三、点击第一条进入
第四步、找到你要的版本
注意:这里选择版本很重要,如果选错可能会出问题
如果使用 eclipse开发工具则选择1.6.0版本
如果使用 IDEA开发工具则选择1.4.7版本
第五步、点击版本 1.4.7进入
第六步、复制
javax.mail javax.mail-api1.4.7
第七步、打开Maven项目,找到pom.xml,然后复制粘贴下去,在pom.xml刷新一下就好了
二、应用
1、发送邮件
1) 首先开启 邮箱的 SMTP 服务
- 这里我就用QQ邮箱示范
- 打开QQ
- 进入QQ邮箱
- 找到设置,点击设置
- 进入设置之后点击账户
- 然后找到SMTP
- 找到之后,进入‘管理服务’
- 在‘管理服务’找到 安全设置
- 在 安全设置 找到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;public class Email_Code { private static final String SEND_ACCOUNT = "xx@qq.com"; //QQ邮箱地址 private static final String SEND_PASSWORD = "xx"; //授权码 private static final String SMTP_HOST = "smtp.qq.com"; private static final String RECEIVE_ACCOUNT = "xx@qq.com"; //收件人的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(); } 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;public class Mail { public static void Mail_Code (String EMAIL,String AUTHORIZECODE,String Verify_NAME){ //发送邮箱验证 String SEND_ACCOUNT =EMAIL ; String SEND_PASSWORD = AUTHORIZECODE;//授权码 String SMTP_HOST = "smtp.qq.com"; 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("xxx@qq.com","输入授权码","校园论坛"); }
5)测试结果
我这里发送邮件,是发送验证码,大家可以举一反三,可以拿来发送信息等操作
半杯不啰嗦,就写到这里了,希望得到帮助的伙伴,一键三连!