zoukankan      html  css  js  c++  java
  • 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");
        }
  • 相关阅读:
    uva 10881
    uva 1388
    【USACO 3.2.5】魔板
    【USACO 3.2.4】饲料调配
    【USACO 3.2.3】纺车的轮子
    【USACO 3.2.2】二进制数01串
    【USACO 3.2.1】阶乘
    【USACO 3.1.6】邮票
    【USACO 3.1.5】联系
    【USACO 3.1.4】形成的区域
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14483448.html
Copyright © 2011-2022 走看看