阿里邮箱发送带excel附件邮件

导包

java 复制代码
<dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.7</version>
</dependency>

内容

java 复制代码
调用
EmilUtil.sendEmail("[email protected]",
                             host,
                             username,
                             password,
                             port,
                             excelFile,
                             "主题",
                             content);

工具类

java 复制代码
package com.ruoyi.common.utils.emil;

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.File;
import java.security.Security;
import java.util.Map;
import java.util.Properties;

public class EmilUtil {


public static void sendEmail(String toEmail, String host, String username, String password,String port, File file, String bt, String contentXML) {
        try {
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
            Properties props = System.getProperties();
            props.setProperty("mail.smtp.host", host);
            props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
            props.setProperty("mail.smtp.socketFactory.fallback", "false");
            //设置端口
            props.setProperty("mail.smtp.port", port);
            //启用调试
            props.setProperty("mail.debug", "true");
            props.setProperty("mail.smtp.socketFactory.port", port);
            props.setProperty("mail.smtp.auth", "true");
            //建立邮件会话
            Session session = Session.getDefaultInstance(props, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
            //建立邮件对象
            MimeMessage message = new MimeMessage(session);
            //设置邮件的发件人、收件人、主题
            //发件人账号
            message.setFrom(new InternetAddress(username));
            //收件人账号
            message.setRecipients(Message.RecipientType.TO, toEmail);
            //邮件标题
            message.setSubject(bt);
            //内容
            Multipart multipart = new MimeMultipart();
            BodyPart contentPart = new MimeBodyPart();
            //邮件内容
            contentPart.setContent(contentXML, "text/html;charset=utf-8");
            multipart.addBodyPart(contentPart);
            message.setContent(multipart);

            //附件
            // 创建消息部分
            BodyPart messageBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(file);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(file.getName());
            multipart.addBodyPart(messageBodyPart);
            message.saveChanges();

            Transport.send(message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

配置

java 复制代码
//注意阿里邮箱设置设置第三方权限验证则无法验证通过    
mail:
        host: smtp.qiye.aliyun.com
        port: 465
        username: [email protected]
        password: xxxx@#123465
相关推荐
珠峰下的沙砾几秒前
Vue3 里 CSS 深度作用选择器 :global
前端·javascript·css
航Hang*2 分钟前
WEBSTORM前端 —— 第2章:CSS —— 第3节:背景属性与显示模式
前端·css·css3·html5·webstorm
小臭希3 分钟前
Java——琐碎知识点一
java·开发语言
wuhen_n4 分钟前
CSS元素动画篇:基于当前位置的变换动画(一)
前端·css·html·css3·html5
拉不动的猪21 分钟前
# 移动端与PC端全屏的处理
前端·javascript·面试
悄悄敲敲敲30 分钟前
Linux:进程间通信->命名管道
linux·运维·服务器
局外人LZ35 分钟前
WXT+Vue3+sass+antd+vite搭建项目开发chrome插件
前端·chrome·vue·sass
excel39 分钟前
招幕技术人员
前端·javascript·后端
望获linux1 小时前
智能清洁机器人中的实时操作系统应用研究
大数据·linux·服务器·人工智能·机器人·操作系统
淋一遍下雨天1 小时前
Spark Streaming核心编程总结(四)
java·开发语言·数据库