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和发送邮件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论