JAVA数据写入生成excel文件和发送邮件

 更新时间:2024年06月01日 11:44:31   作者:我就吃最后一口  
这篇文章主要介绍了JAVA数据写入生成excel文件和发送邮件,流程:先导包 => 邮箱开启配置 => java写好配置类 => 测试发送 => 数据写入excel => 邮件带附件发送

JAVA数据写入生成excel文件和发送邮件流程:

​ 先导包 => 邮箱开启配置 => java写好配置类 => 测试发送 => 数据写入excel => 邮件带附件发送

邮箱jar包

<dependencies>
    <dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
    </dependency>
</dependencies>

邮箱开启配置

我这个是163的,开启之后会生成授权码,记得复制粘贴到自己的项目配置文件里面去

邮箱配置类

public final class JavaMailUtil {
    //文件地址 上面是linux地址,下面是我自己本地测试用的
    //public final static String FILEPATH = "/wenjie/javaProject/bomexcelfiles";
    public final static String FILEPATH = "e:/Users/liuwenj/Desktop/";
    
    private JavaMailUtil() {
    }
    public static Session createSession() {
        //账号信息
        String username = "";//邮箱发送账号
        String password = "";//邮箱授权码
        //创建一个配置文件,并保存
        Properties props = new Properties();
        //SMTP服务器连接信息
        //126——smtp.126.com
        //163——smtp.163.com
        props.put("mail.smtp.host", "smtp.126.net");//SMTP主机名
        //126——25
        //163——645 如果645一直连不上,可以换成25试一试
        props.put("mail.smtp.port", "25");// 主机端口号
        props.put("mail.smtp.auth", "true");// 是否需要用户认证
        props.put("mail.smtp.starttls.enable", "true");// 启用TlS加密
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // TODO Auto-generated method stub
                return new PasswordAuthentication(username, password);
            }
        });
        //控制台打印调试信息
        session.setDebug(true);
        return session;
    }
}

测试发送纯文本

//创建Session会话
Session session = JavaMailUtil.createSession();

//创建邮件对象
MimeMessage message = new MimeMessage(session);
message.setSubject("主题");
message.setFrom(new InternetAddress("发送者邮箱"));
//发送给一个人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("接收者邮箱"));
//发送给多个人
//message.setRecipients(MimeMessage.RecipientType.CC, new InternetAddress[] {new InternetAddress("接收者邮箱")});

//纯文本信息
message.setText("文本信息:来自于公司PLM系统测试");
//发送
Transport.send(message);

数据写入excel,并生成文件

先导jar

<!-- Apache POI -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

写入数据到excel

Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Bom");
//第一行的数据名
List<String> labelList = Arrays.asList("物料编码", "描述");
Row row = sheet.createRow(0);
for (int i = 0; i < labelList.size(); i++) {
    row.createCell(i).setCellValue(labelList.get(i));
}
int rowNo = 1;
//获取数据然后放入Excel
List<Map<String, Object>> bomList = plmDataService.getBomNotPerfect();
for (Map<String, Object> bom : bomList) {
    String no = (String) bom.get("ITEM_NUMBER");
    String desc = (String) bom.get("DESCRIPTION");
    Row tempRow = sheet.createRow(rowNo);
    rowNo++;

    tempRow.createCell(0).setCellValue(no);
    tempRow.createCell(1).setCellValue(desc);
}
// 写入数据到Excel
try (FileOutputStream outputStream = new FileOutputStream(JavaMailUtil.FILEPATH + fileName)) {
    workbook.write(outputStream);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        workbook.close(); //关闭工作簿
    } catch (IOException e) {
        e.printStackTrace();
    }
}

一切准备就绪之后就可以发送邮件了

发送邮件(带附件)

//创建会话
Session session = JavaMailUtil.createSession();

//创建邮件对象
MimeMessage message = new MimeMessage(session);
message.setSubject("主题");
message.setFrom(new InternetAddress("发送者邮箱"));
//发送给一个人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("接收者邮箱"));
//发送给多个人
//message.setRecipients(MimeMessage.RecipientType.CC, new InternetAddress[] {new InternetAddress("接收者邮箱")});

//邮件主体
BodyPart textPart = new MimeBodyPart();
textPart.setContent("文本信息:来自于公司PLM系统测试", "text/html;charset=utf-8");

//邮件附件
BodyPart filePart = new MimeBodyPart();
filePart.setFileName(fileName);

//提交附件文件
filePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get(JavaMailUtil.FILEPATH + fileName)), "application/octet-stream")));

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(filePart);

//将邮件装入信封
message.setContent(multipart);
//发送
Transport.send(message);

如果有发送一些特殊需求,比如需要内嵌图片HTML

发送邮件(内嵌图片HTML)

PS: 没有试过,copy的代码,贴上去以后如果有需求了再验证

Session session = JavaMailUtils.createSession(); //创建session对象
MimeMessage message = new MimeMessage(session); //创建message对象
message.setSubject("测试邮件"); //设置邮件标题
message.setFrom(new InternetAddress("xxxxxx@163.com")); //设置发送方地址
message.setRecipient(RecipientType.TO, new InternetAddress("xxxxxx@qq.com")); //设置接收方地址
message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("xxxxxx@qq.com"),new InternetAddress("xxxxxx@qq.com")}); //群发(抄送多人)
//正文
BodyPart textPart=new MimeBodyPart();
StringBuilder contentText=new StringBuilder();
contentText.append("<h3>网易邮箱/h3>");
contentText.append("<p>给QQ邮箱发消息了!</p>");
contentText.append("<img src=\"cid:xxx\"/>");  
textPart.setContent(contentText.toString(),"text/html;charset=utf-8");
//附件
BodyPart imagePart=new MimeBodyPart();  
imagePart.setDataHandler(new DataHandler(
    new ByteArrayDataSource(Files.readAllBytes(Paths.get("D://test//1.jpg")), "application/octet-stream"))); //
imagePart.setHeader("Content-ID", "xxx"); //图片的内容ID
Multipart multipart=new MimeMultipart(); //创建multipart对象
multipart.addBodyPart(textPart); //将textPart对象放入multipart
multipart.addBodyPart(filePart); //将filePartt对象放入multipart
message.setContent(multipart); //将multipart对象放入邮件
Transport.send(message); //发送邮件

 

到此这篇关于JAVA数据写入生成excel文件和发送邮件的文章就介绍到这了,更多相关JAVA生成excel和发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java获取日期的方法

    java获取日期的方法

    这篇文章介绍了java获取日期的方法,有需要的朋友可以参考一下
    2013-10-10
  • SpringBoot使用Log4j过程详解

    SpringBoot使用Log4j过程详解

    这篇文章主要介绍了SpringBoot使用Log4j过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java动态修改配置即时生效的方式WatchService

    Java动态修改配置即时生效的方式WatchService

    这篇文章给大家分享了Java动态修改配置即时生效的方式WatchService的相关知识点内容,有兴趣的朋友可以参考学习下。
    2018-06-06
  • java定长队列的实现示例

    java定长队列的实现示例

    定长队列是一种有限容量的队列,对于某些应用场景非常有用,本文主要介绍了java定长队列的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Spring Boot构建框架详解

    Spring Boot构建框架详解

    这篇文章主要为大家详细介绍了Spring Boot构建框架的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • jar运行报错no main manifest attribute原因分析及解决

    jar运行报错no main manifest attribute原因分析及解决

    文章主要讨论了在使用`java -jar`命令运行jar包时遇到的“nomainmanifestattribute”错误,并提供了可能的解决方案,包括检查pom.xml配置,添加打包插件配置,以及使用IDEA进行打包等方法
    2026-04-04
  • JAVA字符串拼接常见方法汇总

    JAVA字符串拼接常见方法汇总

    这篇文章主要介绍了JAVA字符串拼接常见方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java 高并发十: JDK8对并发的新支持详解

    Java 高并发十: JDK8对并发的新支持详解

    本文主要介绍Java 高并发JDK8的支持,这里整理了详细的资料及1. LongAdder 2. CompletableFuture 3. StampedLock的介绍,有兴趣的小伙伴可以参考下
    2016-09-09
  • 将项目上传到Maven中央仓库(2023最新版)

    将项目上传到Maven中央仓库(2023最新版)

    本文主要介绍了将项目上传到Maven中央仓库(2023最新版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • SpringBoot实现对超大文件进行异步压缩下载的使用示例

    SpringBoot实现对超大文件进行异步压缩下载的使用示例

    在Web应用中,文件下载功能是一个常见的需求,本文介绍了SpringBoot实现对超大文件进行异步压缩下载的使用示例,具有一定的参考价值,感兴趣的可以了解一下,
    2023-09-09

最新评论