使用java api 创建excel内容并发送邮件
简述:
最近使用 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&©ToList.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项目 。
欢迎一起交流:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
JavaScript学习(一)
一、使用软件Hbuilder。 二、javascript(java编程语言,script脚本:java的脚本语言) 诞生于1995年,出现时主要用于处理网页中的前端验证。----所谓前端验证,就是指检查用户输入内容是否符合一定的规则。比如:用户名称的长度、密码的长度、邮箱的格式等。 javascript的标准是SCMAscript 一个完整的javascript由三个部分组成:ECMAscript(标准)、DOM(文档对象模型)、BOM(浏览器对象模型) 特点:1.解释型语言 ---不需要编译,可以直接运行 2.类似于C和java的语法结构 3.动态语言 4.基于原型的面向对象 <!--js代码需要编写到script的标签中--> <script type="text/javascript"> </script> 三、javascript语句警告框、页面body、控制台输出 /*控制浏览器弹出一个警告框*/ alert("这是第一行JavaScript代码") /*让计算机在页面中输出一个内容*/ document.write("...
-
下一篇
【数据预处理】使用深度学习预测未来销量
在 《【Get】用深度学习识别手写数字》 中,我们通过一个手写数字识别的例子,体验了如何使用 深度学习 + tensorflow 解决一个具体的问题。 实际上,这是一个分类问题,即将输入的图片数据分成 0-9 共 10 个类别,而且我们的数据都是直接使用 MNIST 上下载的处理好的数据。 在现实生产中,我们的数据源通常来自于数据库,是没有经过预处理的,那么我们该做些什么来让这些数据库里的数据能够用于进行机器学习呢? 机器学习的前置步骤,数据预处理就是解决这个问题的。 本篇 CoorChice 将会通过一个回归预测问题,来展示如何进行这个过程。 原始数据 我们用于机器学习的数据的量不能太少,否则训练效果会极差。但是我们个人如何才能获取到大量的数据来进行训练呢? CoorChice 推荐 kaggle:https://www.kaggle.com/datasets,这是全球最大的数据科学社区和数据竞赛平台。在这个美妙的地方,我们可以轻松的找到各种各样的,海量的,精彩绝伦的数据。 打开链接就可以看到海量的数据,我们很随意的选择其中一个数据源来进行训练。 就选第一条吧! 第一条数据是关于一个...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,CentOS7官方镜像安装Oracle11G
- Crontab安装和使用
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长