使用java email过程中遇到的一些问题

使用java email过程中遇到的一些问题

配置

使用java email工具类时,首先要引入相关依赖:
java email依赖

配置MailUtil工具类

/**
 * @author renyucheng
 * @create 2021-10-19 14:09
 */
public class MailUtil {
    //发件人邮箱、密码
    public static String myEmailAccount = "发件人邮箱地址";
    public static String myEmailPassword = "发件人邮箱密码";

    //发件人SMTP地址 163通用SMTP地址为smtp.163.com
    public static String myEmailSMTPHost = "smtp.163.com";

    //收件人邮箱
    public static String receiveEmailAccount = "收件人地址";

    public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {
        //1.创建用于连接邮件服务器的参数配置
        Properties props = new Properties();                    // 参数配置
        props.setProperty("mail.transport.protocol","smtp");    // 使用的协议(来自java email规范)
        props.setProperty("mail.smtp.host",myEmailSMTPHost);    // 发件人邮箱的smtp地址
        props.setProperty("mail.smtp.auth","true");             // 需要请求认证

        //2.创建验证器 网上很多攻略都漏了这一步,导致爆出535的授权码错误<br/>
        //授权码是指网易邮箱SMTP协议中一种提供授权登录的16位编码<br/>
        //可以用来代替密码访问邮箱,获取邮件发送权限等
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication(){
                return new PasswordAuthentication("发件人邮箱地址","网易邮箱or其他邮箱的授权码");
            }
        };

        //3.配置会话对象,用于和邮件服务器交互
        Session session = Session.getInstance(props,auth);
        session.setDebug(true);                                 // 设为debug模式,可以看到详细的发送日志

        //4.创建一封邮件
        MimeMessage message = createMimeMessage(session,myEmailAccount,receiveEmailAccount);

        //5.根据Session获取邮件传输对象
        Transport transport = session.getTransport();

        //6.使用邮箱账号密码连接邮件服务器
        transport.connect(myEmailAccount,myEmailPassword);

        //7.发送邮件,发到所有的地址,通过message.getAllRecipients()获取设置的所有收件人地址
        transport.sendMessage(message,message.getAllRecipients());

        //8.关闭连接
        transport.close();
    }

    /**
     * 邮件对象具体配置
     * @param session
     * @param sendMail
     * @param receiveMail
     * @return
     */
    public static MimeMessage createMimeMessage(Session session,String sendMail,String receiveMail) throws UnsupportedEncodingException, MessagingException {
        //1.创建邮件对象
        MimeMessage message = new MimeMessage(session);

        //2.From 发件人
        message.setFrom(new InternetAddress(sendMail,"远古神魔","UTF-8"));

        //3.抄送人
        message.addRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveMail,"测试邮件","UTF-8"));

        //4.Subject: 邮件主题
        message.setSubject("这是一封来自远古的邮件","UTF-8");

        //5.content: 邮件内容
        message.setContent("刮开领取上古神兽:<br> *********","text/html;charset=utf-8");

        //......省略若干配置

        //6.保存配置
        message.saveChanges();

        return message;
    }
}

如此这般配置完毕,即可发送定义好的邮件内容啦,其他需要自定义的参考java email相关配置。

关于授权码配置

网易邮箱配置授权码的位置在这里:
网易邮箱配置授权码
开启最上面的两个服务,然后在授权码管理的位置配置授权码
注:配置授权码会提示发送短信,配置完成会生成授权码,注意截图或者拍照记下来授权码,不然忘了之后可能要重新获取授权码,让运营商白嫖可不好!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值