Java实现发送邮箱邮件和验证码

文章介绍了如何通过Java编程,利用ApacheCommonsEmail库发送邮件和验证码。在发送前需开启SMTP服务并获取邮箱授权码。示例代码展示了使用Outlook邮箱发送邮件的过程,包括设置SMTP服务器地址、端口和加密方式。同时提到了QQ邮箱可能面临的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在通过Java实现使用邮箱发送邮件和验证码之前需要先注册一个邮箱并开启邮箱的SMTP服务,并且还要获得对应的服务授权码(密码)


本文中通过使用Apache Commons Email依赖来实现上述功能

  • 首先导入依赖

        <!--Apache Commons Email-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>

发送邮件

  • :email.setStartTLSEnabled(true) 如果不是微软 Outlook 邮箱不要启用这个方法,我个人用的是微软 Outlook 邮箱

    public void sendEmail() throws EmailException {
        HtmlEmail email = new HtmlEmail();//创建对象
        email.setCharset("utf-8");//字符类型
        email.setHostName("smtp.office365.com");//邮箱的SMTP服务器地址
        email.setSmtpPort(587);//配置端口号(默认25)有的邮箱平台关闭了25端口号,如果用默认端口号可能会导致某些平台的SMTP服务器连接失败
        email.setStartTLSEnabled(true);//开启STARTTLS,微软Outlook邮箱加密方式是STARTTLS,如果不开启会导致连接失败(如果是用QQ邮箱或网易邮箱就删掉这个方法)
        email.setFrom("xxx@outlook.com","服务团队");//发送人邮箱;用户名(可以随便填)
        email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");//发件人邮箱;密码(授权码)
        email.addTo("xxx@outlook.com");//收件人邮箱
        email.setSubject("标题");//邮件标题
        email.setMsg("测试内容<br>测试内容<br>测试内容<br>测试内容");//邮件内容
        email.send();//发送邮件
    }

发送验证码

    public void sendCode() throws EmailException {
        Random random = new Random();
        String code = "";
        for(int i = 0; i<6; i++){
            code += random.nextInt(10);//生成0-9的随机数,并循环生成6位
        }
        HtmlEmail email = new HtmlEmail();//创建对象
        email.setCharset("utf-8");//字符类型
        email.setHostName("smtp.office365.com");//邮箱的SMTP服务器地址
        email.setSmtpPort(587);//配置端口号(默认25)有的邮箱平台关闭了25端口号,如果用默认端口号可能会导致某些平台的SMTP服务器连接失败
        email.setStartTLSEnabled(true);//开启STARTTLS,微软Outlook邮箱加密方式是STARTTLS,如果不开启会导致连接失败(如果是用QQ邮箱或网易邮箱就删掉这个方法)
        email.setFrom("xxx@outlook.com","服务团队");//发送人邮箱;用户名(可以随便填)
        email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");//发件人邮箱;密码(授权码)
        email.addTo("xxx@xxx.com");//收件人邮箱
        email.setSubject("标题");//邮件标题
        email.setMsg("验证码:"+code);//邮件内容
        email.send();//发送邮件
    }

成功发送截图

我个人其实并不是很推荐用微软 Outlook 邮箱,因为访问速度没有国内的邮箱快,导致发送邮件比较慢,但奈何 QQ 邮箱发的邮件又很容易进垃圾箱,因此只好使用微软邮箱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CVPlayer-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值