Java发送邮件验证码

前言

  本文章除了给你现成的发送源码前,希望大家能好好了解下关于收发邮件的一些常识和业务,请您耐心完整地看完。若你是未使用 过 API 来发送邮箱验证码,相信您一定会恍然大悟。

一. 邮件收发流程介绍

   请大家看下上面的图;当发件人和收件人都是同一个网站的email账户(比如QQ),小明 给 小红 发一封邮件,则小明则是客户端1,小红是客户端2;中间的邮件服务器则是QQ邮件服务器;这种情况属于同一邮件服务器发送邮件。

二. 邮件收发协议

   一般 发邮件 需要遵守SMTP协议,收邮件遵守POP3协议;简单了解即可。

三. 不同服务器的邮件收发过程

   有时候我们有这样的需求:我使用163.com的邮箱账号 发邮件给 qq.com的账号,那邮件的收发流程就如上图所示。

四. 如何使用Java发送邮件

  在编码前,需要开通两个服务;以QQ为例,需要做下面的工作:

   上面的工作完成,下面开始编码。

  1. 设置依赖,如下:

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>
    </dependencies>

  2. 发邮件代码(改为你们的邮箱和授权码等):

    public static boolean sendEmail(String emailaddress, String code) { //emailaddress是收件人的邮箱地址,code是邮箱验证码;记住一点:邮箱验证码是由我们自己决定的
        try {
            HtmlEmail email = new HtmlEmail();//能发邮箱的一个对象
            email.setHostName("smtp.qq.com");//设置邮件服务器的名称。这里是发件人的邮箱服务器;比如你用qq邮箱,那就是smtp.qq.cm;126邮箱为smtp.126.com,163邮箱为163.smtp.com
            email.setCharset("UTF-8");
            email.addTo(emailaddress);// 收件人的邮箱地址

            email.setFrom("xxxx@qq.com", "aa");//此处填发件人邮箱地址和用户名,用户名可以任意填写

            email.setAuthentication("xxxx@qq.com", "dmonqclqxgtvgaej");//发件人的邮箱地址 和 发件人的授权码;这个授权码是需要发件人提前开通和生成的
            //此处填写邮箱地址和客户端授权码

            email.setSubject("孙大大通讯");//此处填写邮件主题
            email.setMsg("尊敬的用户您好,您本次注册的验证码是:" + code);//设置邮件正文

            email.send();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

  3. 测试。

    public static void main(String[] args) {
        sendEmail("xxxx@qq.com", "440");
    }

 

posted @ 2021-03-04 22:37  爱编程DE文兄  阅读(465)  评论(0编辑  收藏  举报