使用java api 创建excel内容并发送邮件-阿里云开发者社区

开发者社区> 千狼> 正文

使用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项目 。
欢迎一起交流:
在这里插入图片描述

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微服务架构 | 2.2 Alibaba Nacos 的统一配置管理
Nacos 致力于解决微服务中的统一配置、服务注册与发现等问题。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理;
9 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(5)
33 0
冬季实战训练营-第一期-学习报告
冬季实战训练营-第一期-学习报告
7 0
云起实验室第一期学习
云起实验室第一期学习-Tiger
9 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(4)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(4)
30 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
45 0
学习报告——冬季实战营第一期:从零到一上手玩转云服务器
训练营日期:2022年1月17日 - 2022年1月23日
40 0
+关注
千狼
常年在 javaWeb 大数据领域中 突破自我 ,希望可以有更多志同道合之士一起交流
12
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载