使用java api 创建excel内容并发送邮件

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26654727/article/details/83473968 文章目...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26654727/article/details/83473968


简述:
最近使用 github 在归类自己平时使用的工具类 github 地址:
https://github.com/auguszero/javaToolRepsitory

利用java api 创建excel 内容并发送邮件

主要实现功能:

1.通过配置文件设置发送邮件发送方,接收方,抄送方 
2.目前实现了 自定义发送内容
3.实现了excel 邮件发送内容 

核心代码 (SendMailManager ) :

package com.javatool.email.proxy;
import com.javatool.configer.DefaultConfigerContext;
import com.javatool.email.model.MailAuthenticator;
import com.javatool.email.model.SendMailConfigModel;
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.util.Date;
import java.util.List;
import java.util.Properties;

/**
 * @author haisong
 * @create 2018/09/13 14:21
 */
public class SendMailManager {


    /**
     * 发送邮件
     * @param subject 邮件主题
     * @param content 邮件内容
     * @return success 发送成功 failure 发送失败
     * @throws Exception
     */
    public static String sendMail( String subject, String content)
            throws Exception {
        SendMailConfigModel sendMailConfigModel  = DefaultConfigerContext.getInstance().getModelFromProperties(SendMailConfigModel.class);
        String to = sendMailConfigModel.getTo();
        if (to != null){
              Properties props = System.getProperties();
            props.put("mail.smtp.host", sendMailConfigModel.getMail_smtp_host());
            props.put("mail.smtp.auth", "true");
            props.put("mail.transport.protocol", "smtp");
            MailAuthenticator auth = new MailAuthenticator();
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);
            try {
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(sendMailConfigModel.getFrom()));
                if (!to.trim().equals("")) {
                    message.addRecipient(Message.RecipientType.TO,
                            new InternetAddress(to.trim()));
                }
                List<String> copyToList = sendMailConfigModel.getCopyToList();
                if(copyToList!=null&&copyToList.size()>0) {
                    Address[] addresses = new Address[copyToList.size()];
                    int i = 0;
                    for (String copy : copyToList) {
                        addresses[i] = new InternetAddress(copy);
                        i++;
                    }
                    message.addRecipients(Message.RecipientType.CC, addresses);
                }
                message.setSubject(subject);
                MimeBodyPart mbp1 = new MimeBodyPart(); // 正文
                mbp1.setContent(content, "text/html;charset=utf-8");
                Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
                mp.addBodyPart(mbp1);
                message.setContent(mp);
                message.setSentDate(new Date());
                message.saveChanges();
                Transport trans = session.getTransport("smtp");
//                trans.connect("smtp.163.com", sendMailConfigModel.getUser(), sendMailConfigModel.getPassword());
                trans.send(message);
                System.out.println(message.toString());
            } catch (Exception e){
                e.printStackTrace();
                return "failure";
            }
            return "success";
        }else{
            return "failure";
        }
    }



    public static String SendExcelMail(String  subject,List<List<String>> conteList) throws Exception {
        String htmlStr ="";
        for(int i=0;i<conteList.size();i++){
            htmlStr = createHTML(htmlStr,conteList.get(i),i==0?true:false,i==conteList.size()-1?true:false);
        }
       String result =  sendMail(subject,htmlStr);
        return result;
    }



    private static String createHTML(String originHtml, List<String> data,boolean headFlage,boolean endFlage) {
        String html_msg="";
        if(headFlage){
            html_msg = "<table border=\"1\" width='80%' height='80'>";
            html_msg = html_msg+"<tr bgcolor='#B6DDE6'>";
            for(int column=0;column<data.size();column++){
                html_msg = html_msg +"<td width='12%'>"+data.get(column)+"</td>";
            }
            html_msg = html_msg+"</tr>";
        }else{
            html_msg = html_msg+"<tr>";
            for(int column=0;column<data.size();column++){
                html_msg = html_msg +"<td>"+data.get(column)+"</td>";
            }
            html_msg = html_msg+"</tr>";
        }
        if(endFlage){
            html_msg = html_msg + "</table>";
        }
        return originHtml+html_msg;
    }
}

配置文件内容 :

sendMail.mail_smtp_host=smtp.163.com
sendMail.mail_smtp_auth=login
sendMail.user=***@163.com
sendMail.password=******
sendMail.from=*****@163.com
sendMail.to=auguszero@163.com

excel 邮件发送实例图:

在这里插入图片描述

如果你觉得可以 可以直接在github 上将该项目打包好 进行引入 作为工具类 。

同时欢迎大家一起来完善这个github项目 。
欢迎一起交流:
在这里插入图片描述

目录
相关文章
|
1天前
|
网络协议 Java API
Java语言发送邮件的技术性详解
Java语言发送邮件的技术性详解
|
1天前
|
Oracle 安全 Java
JAVA用Mail发送API的方法步骤教程
使用Java和Mail发送API实现自动化邮件发送,提高效率。步骤包括:1. 安装JDK并配置JAVA_HOME,2. 添加JavaMail库(可通过Maven或官网下载)。配置邮件发送涉及邮件服务器地址、端口和认证信息。创建邮件会话、邮件消息对象,然后使用Transport发送。示例代码展示完整流程。注意处理认证失败、连接问题和邮件发送失败等常见问题。
|
1天前
|
编解码 前端开发 Java
Java网络API之Netty深度解析
Java网络API之Netty深度解析
8 0
|
1天前
|
Java API
Java 8新特性之Lambda表达式和Stream API
【5月更文挑战第31天】本文将详细介绍Java 8中的两个重要特性:Lambda表达式和Stream API。通过对比传统编程方式,我们将探讨这两个特性如何简化代码、提高可读性和性能。文章还将通过实例演示如何使用Lambda表达式和Stream API进行集合操作、过滤和转换等任务。
|
2天前
|
Java API 数据处理
Java 8中的Stream API简介及其在数据处理中的应用
【5月更文挑战第30天】 本文旨在介绍Java 8中引入的Stream API,它是一种用于处理集合的新方法。与传统的循环和迭代器相比,Stream API提供了一种更简洁、高效的方式来处理数据。文章将详细介绍Stream API的基本概念、常用操作以及在实际项目中的应用场景。
|
2天前
|
Java API
Java 8新特性之Stream API详解
【5月更文挑战第30天】本文将详细介绍Java 8中的一个重要新特性——Stream API。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,使得代码更加简洁、易读。文章将从Stream的基本概念、创建方式、常用操作以及实战案例等方面进行详细讲解,帮助读者深入理解并掌握Stream API的使用。
|
3天前
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
20 1
|
3天前
|
Java API
Java 8新特性之Lambda表达式与Stream API
【5月更文挑战第29天】本文将介绍Java 8中的两个重要特性——Lambda表达式和Stream API。Lambda表达式简化了函数式编程,使得代码更加简洁易读;而Stream API则为集合操作提供了更加高效且易于理解的方法。通过本文的学习,你将掌握这两个特性的基本用法,并了解如何在实际项目中应用它们。
|
4天前
|
安全 Java API
Java 8中的Stream API:简介与实用指南深入理解Java并发编程:线程安全与锁优化
【5月更文挑战第29天】本文旨在介绍Java 8中引入的Stream API,这是一种用于处理集合的新方法。我们将探讨Stream API的基本概念,以及如何使用它来简化集合操作,提高代码的可读性和效率。 【5月更文挑战第29天】 在Java并发编程中,线程安全和性能优化是两个核心议题。本文将深入探讨如何通过不同的锁机制和同步策略来保证多线程环境下的数据一致性,同时避免常见的并发问题如死锁和竞态条件。文章还将介绍现代Java虚拟机(JVM)针对锁的优化技术,包括锁粗化、锁消除以及轻量级锁等概念,并指导开发者如何合理选择和使用这些技术以提升应用的性能。
|
4天前
|
Java API 数据安全/隐私保护
Java 发送邮件
5月更文挑战第20天