使用java发送邮件(支持多人)

        公司有一个demo需求使用java给用户邮箱发送邮件

        1.首先需要去自己的邮箱开通POP3/SMTP/IMAP权限,获取到里面的授权码使用java发送邮件(支持多人)_第1张图片

2.上maven依赖!

        
            com.sun.mail
            javax.mail
            1.4.7
        

3.邮箱工具类(LOGGER为日志,可以删除,请把上面引入包的替换成自己的package)

package com.eigpay.scfmanager.service.report.impl;

import com.eigpay.scfmanager.model.report.ReportInfoEmail;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @description:
 * @author: zjh
 * @time: 2021/8/18
 */
@Component

public class EmailUtil {
    private static final Logger LOGGER = LoggerFactory.getLogger(EmailUtil.class);

    /**
     * 邮件上传方法
     * @param stringList 需要发送的邮箱集合
     * @param emailAccout 邮箱账号
     * @param emailKey 邮箱秘钥
     * @param emailName 邮箱发送者名称
     * @param stmp 发送协议
     * @param mainBody 正文内容
     */
    public void email(String mainBody,List stringList,ReportInfoEmail reportInfoEmail,  String emailAccout, String emailKey, String emailName, String stmp) {

        LOGGER.info("**********进入邮件上传***********");
        // 01 创建一个HtmlEmail实例对象
        HtmlEmail email = new HtmlEmail();

        // 02 连接邮箱的SMTP服务器:一般QQ邮箱为 smtp.qq.com,163邮箱为 smtp.163.com
        // 这里以大家常用的QQ邮箱来模拟公司邮箱
        //email.setHostName("smtp.qq.com");
        LOGGER.info("连接SMTP地址{}",stmp);
        email.setHostName(stmp);
        // 03 设置发送的字符类型(编码格式选支持中文的utf-8)
        email.setCharset("utf-8");
        try {
            // 04 设置收件人的邮箱(可以多个,也就是填写要发送email的客户邮箱)

            for(String list:stringList){
                email.addTo(list);//设置收件人
            }

            // email.addTo("[email protected]");

            // 05 设置发件人邮箱(也就是公司邮箱,这里以自己的发送邮箱模拟)
            // 第一个参数为:自己的邮箱     第2个参数为:你可以设置你自己发送的昵称(原则上随便填)-->我这里就随便取个名:揪心的情绪
            // 我这里分别以另外1个QQ邮箱作为发件人邮箱

            // email.setFrom("[email protected]", "测试主题");
            LOGGER.info("邮箱账号{},{}",emailAccout, emailName);
            email.setFrom(emailAccout, emailName);
            // 06 获得本地发送邮件的授权码(需要去QQ或者网易邮箱里面开启POP3/SMTP服务)
            // 登录邮箱-->点标题栏的设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-->
            // 开启POP3/SMTP服务-->手机发送短信获取授权码
            //  email.setAuthentication("[email protected]", "nyxmxnxxtugxdxxc");
            email.setAuthentication(emailAccout, emailKey);
            // 07 设置主题(也就是写邮件的主题)
            //设置发送主题
            email.setSubject(reportInfoEmail.getTheme());
            // 08 设置您要发送的内容

            email.setMsg( mainBody);
            //设置发送内容
            // 09 这里设为为true
            email.setSSLOnConnect(true);
            // 10 发送邮件
            email.send();
            LOGGER.info("邮件发送成功!!!!!!!!!");

        } catch (EmailException e) {
            // 捕获可能会发生的异常
            e.printStackTrace();
        }

    }

}

谢谢观看,一个新手的记录博客

你可能感兴趣的:(java,maven)