使用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月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
1月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
68 11
|
2月前
|
数据采集 JSON Java
Java爬虫获取微店快递费用item_fee API接口数据实现
本文介绍如何使用Java开发爬虫程序,通过微店API接口获取商品快递费用(item_fee)数据。主要内容包括:微店API接口的使用方法、Java爬虫技术背景、需求分析和技术选型。具体实现步骤为:发送HTTP请求获取数据、解析JSON格式的响应并提取快递费用信息,最后将结果存储到本地文件中。文中还提供了完整的代码示例,并提醒开发者注意授权令牌、接口频率限制及数据合法性等问题。
|
2月前
|
数据采集 存储 Java
Java爬虫获取微店店铺所有商品API接口设计与实现
本文介绍如何使用Java设计并实现一个爬虫程序,以获取微店店铺的所有商品信息。通过HttpClient发送HTTP请求,Jsoup解析HTML页面,提取商品名称、价格、图片链接等数据,并将其存储到本地文件或数据库中。文中详细描述了爬虫的设计思路、代码实现及注意事项,包括反爬虫机制、数据合法性和性能优化。此方法可帮助商家了解竞争对手,为消费者提供更全面的商品比较。
|
2月前
|
数据采集 算法 Java
如何在Java爬虫中设置动态延迟以避免API限制
如何在Java爬虫中设置动态延迟以避免API限制
|
3月前
|
算法 Java 程序员
菜鸟之路Day06一一Java常用API
《菜鸟之路Day06——Java常用API》由blue编写,发布于2025年1月24日。本文详细介绍了Java中常用的API,包括JDK7的时间类(Date、SimpleDateFormat、Calendar)和JDK8新增的时间API(ZoneId、Instant、DateTimeFormatter等),以及包装类的使用。通过多个实例练习,如时间计算、字符串转整数、十进制转二进制等,帮助读者巩固所学内容,提升编程技能。文章强调了理论与实践结合的重要性,鼓励读者多做练习以提高学习效率。
108 28
|
2月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
414 5
|
4月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
544 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
3月前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
4月前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。

热门文章

最新文章