资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

关于Java发送邮件

Java 更新时间: 发布时间: 计算机考试归档 最新发布

关于Java发送邮件

前言: Jakarta Mail 的前⽣是 JavaMail 。 JavaMail 最后⼀个版本是于 2018 年 8 ⽉发布,已经停⽌更新。新项⽬应该使⽤ 简介: JavaMail ,顾名思义,提供给开发者处理电⼦邮件相关的编程接⼝。它是 Sun 发布的⽤来处理 email 的 API 。它可以⽅ 便地执⾏⼀些常⽤的邮件传输。我们可以基于 JavaMail 开发出类似于 Microsoft Outlook 的应⽤程序。 JavaMail 包中⽤于处理电⼦邮件的核⼼类是: Session,Message,Address,Authenticator,Transport,Store,Folder 等。 Session 定义了⼀个基本的邮件会话,它需要从 Properties 中读取类似于邮件服务器,⽤户名和密码等信息。 另外很好的实现了 JavaMail API 的框架有 James 、 Spring Mail 。

一、下载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-api    1.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)测试结果

我这里发送邮件,是发送验证码,大家可以举一反三,可以拿来发送信息等操作

半杯不啰嗦,就写到这里了,希望得到帮助的伙伴,一键三连!

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1095364.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【关于Java发送邮件】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2