27.发送邮件工具类

/**
 * 邮件工具类
 *
 * @author zj
 * @date 2022/03/14 16:39
 **/
public class EMailUtil {

    /**
     * 创建简单的文本邮件
     *
     * @param session     session对象
     * @param mailFrom    邮件发送方地址
     * @param mailTo      邮件接收方地址
     * @param mailTittle  邮件标题
     * @param mailContent 邮件内容
     * @return MimeMessage
     */
    public static MimeMessage simpleMail(Session session, String mailFrom, String mailTo, String mailTittle, String mailContent) {
        //创建默认的MimeMessage 对象
        MimeMessage msg = new MimeMessage(session);
        try {
            //邮件发送人
            msg.setFrom(mailFrom);
            //邮件接收人
            msg.setRecipients(Message.RecipientType.TO, mailTo);
            //邮件标题头
            msg.setSubject(mailTittle);
            //邮件发送日期
            msg.setSentDate(new Date());
            //邮件文本内容
            msg.setContent(mailContent, "text/html;charset=UTF-8");
        } catch (Exception mex) {
            mex.printStackTrace();
        }
        return msg;
    }

    /**
     * 创建带有附件的邮件
     *
     * @param session     session对象
     * @param contentMap  邮件配置和邮件内容
     * @param attachments 邮件附件
     * @return MimeMessage
     */
    public static MimeMessage attachMail(Session session, Map<String, Object> contentMap, List<File> attachments) {
        // 创建邮件对象
        MimeMessage mimeMessage = new MimeMessage(session);
        try {
            //邮件发送人
            mimeMessage.setFrom(contentMap.get("mailFrom").toString());
            //邮件接收人
            mimeMessage.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());
            //邮件主题
            mimeMessage.setSubject(contentMap.get("mailTittle").toString());
            //创建多重消息
            MimeMultipart multipart = new MimeMultipart();
            //邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(contentMap.get("mailContent").toString(), "text/html;charset=UTF-8");
            multipart.addBodyPart(contentPart);
            //邮件附件
            if (attachments != null) {
                for (File attachment : attachments) {
                    BodyPart attachmentPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(attachment);
                    attachmentPart.setDataHandler(new DataHandler(source));
                    //避免中文乱码的处理
                    attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
                    multipart.addBodyPart(attachmentPart);
                }
            }
            mimeMessage.setContent(multipart, "UTF-8");
            //保存邮件
            mimeMessage.saveChanges();
        } catch (Exception mex) {
            mex.printStackTrace();
        }
        return mimeMessage;
    }

    /**
     * 发送邮件方法
     *
     * @param contentMap 邮件配置和邮件内容map
     */
    public static void sendEmail(Map<String, Object> contentMap) {
        sendEmail(contentMap, null);
    }

    /**
     * 发送邮件方法
     *
     * @param contentMap 邮件配置和邮件内容map
     * @param attaches   邮件配置带附件
     */
    public static void sendEmail(Map<String, Object> contentMap, List<File> attaches) {
        try {
            //获取系统属性
            Properties pros = new Properties();
            pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议
            pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址
            pros.setProperty("mail.smtp.auth", "true");// 需要请求认证
            //设置邮件服务器
            Session session = Session.getInstance(pros);
            if (attaches == null) {
                //发送简单的文本邮件
                MimeMessage msg = simpleMail(session, contentMap.get("mailFrom").toString(), contentMap.get("mailTo").toString(), contentMap.get("mailTittle").toString(), contentMap.get("mailContent").toString());
                Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
                System.out.println("Sent simpleMail successfully...");
            } else {
                //发送带附件邮件
                MimeMessage mimeMessage = attachMail(session, contentMap, attaches);
                Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
                System.out.println("Sent attaches Email successfully...");
            }
        } catch (Exception mex) {
            mex.printStackTrace();
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值