[工具类 Java] Java邮件发送

前期准备

1.登陆你需要发送邮件的服务器 开启POP3/SMTP/IMAP 服务 此处我以网易邮箱为例
[工具类 Java] Java邮件发送_第1张图片
登陆

[工具类 Java] Java邮件发送_第2张图片
开启
2.在开启的时候,会让你输入一个授权码 此时需要验证你自己的账户信息
[工具类 Java] Java邮件发送_第3张图片
验证账户信息
3.然后会有一个弹出的界面 会让你添加自己设定的授权码 此处我不截图了

代码编写

1.我使用maven项目搭建 第一步导入依赖
         
            javax.activation
            activation
            1.1.1
        
        
            org.apache.commons
            commons-email
            1.5
        
        
            javax.mail
            mail
            1.4.7
        
2.编写工具类代码
package cn.icanci.utils;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

import java.util.Random;

/**
 * @Author: icanci
 * @ProjectName: null
 * @PackageName: cn.icanci.utils
 * @Date: Created in 2020/2/20 13:55
 * @ClassAction: 发送邮件
 */
public class SendEmailBy163Com{
    /**
     * 生成6位数 验证
     *
     * @return
     */
    public static String getRandomCode() {
        String code = "";
        Random rd = new Random();
        for (int i = 0; i < 6; i++) {
            // 每次随机出一个数字(0-9)
            int r = rd.nextInt(10);
            // 把每次随机出的数字拼在一起
            code = code + r;
        }
        System.out.println(code);
        return code;
    }

    /**
     * 向邮件发送验证码
     *
     * @param email      需要发送的邮箱地址
     * @param randomCode 需要发送的code值
     */
    public static void sendEmail(String email, String randomCode) {
        String sendMessage = "登陆";
        // 创建一个HtmlEmail实例对象
        HtmlEmail send = new HtmlEmail();
        // 获取随机验证码
        String resultCode = randomCode;

        sendMessage = "注册";
        try {
            send.setHostName("smtp.163.com");
            // 第一个参数是发送者的QQEmail邮箱 第二个参数是刚刚获取的授权码
            send.setAuthentication("[email protected]", "grsfasdfdafweasfd");
            // 发送人的邮箱为自己的,用户名可以随便填 记得是自己的邮箱不是qq
            send.setFrom("[email protected]", "璨詞文化");
            // 端口号 必须开  587
            send.setSmtpPort(587);
            // 开启SSL加密
            send.setSSLOnConnect(true);
            //设置编码
            send.setCharset("utf-8");
            // 设置收件人 email为你要发送给谁的邮箱账户 上方参数
            send.addTo(email);
            // 邮箱标题
            send.setSubject("欢迎" + sendMessage + " www.jwebblog.icanci.cn 官网");
            // Email发送的内容
            send.setMsg("【璨詞文化】你正在" + sendMessage + " www.jwebblog.icanci.cn 官网,验证码: " + resultCode
                    + " 验证码十分钟之内有效。 转发可能导致帐号被盗。如果这不是你本人操作请忽略...");
            // 发送
            send.send();
            System.out.println("发送成功");
        } catch (EmailException e) {
            e.printStackTrace();
        }
    }
}
3.测试

发送者

[工具类 Java] Java邮件发送_第4张图片
发送者

接收者
[工具类 Java] Java邮件发送_第5张图片
接收者

这个时候,邮箱是有连接的 因为设置了如下代码

send.setMsg("【璨詞文化】你正在" + sendMessage + " www.jwebblog.icanci.cn 官网,验证码: " + resultCode
                    + " 验证码十分钟之内有效。 转发可能导致帐号被盗。如果这不是你本人操作请忽略...");
在发送邮件的内容区,字符串里面存放超链接代码 在发送之后就自动生成其超链接 类似的,也是可以设置格式和样式以及图片等 本文结束

你可能感兴趣的:([工具类 Java] Java邮件发送)