在通过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 邮箱发的邮件又很容易进垃圾箱,因此只好使用微软邮箱。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐