最近忙于将日常的质量工作纳入到自动化管理中,其中经常会实现给不同人员发送带特定格式和附件的邮件,并抄送给某些领导,在实现过程中从网上找到的东东基本上是比较单一的某项功能,现我把工作中遇到的这种比较综合的功能整理如下,希望对大家有所帮助,期间若有不到位的,烦请大家给予批评指正。

package sendMail.action;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import sendMail.dao.FjDAO;
import sendMail.vo.FjPO;
public class sendemailtest {
public String send(){
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = new MimeMessage(session);
StringBuffer sendAddress = new StringBuffer();
StringBuffer sendCSAddress = new StringBuffer();
sendCSAddress.append("test@163.com,test1@163.com");//抄送人邮箱,多个用英文逗号隔开
sendAddress.append("收件人邮箱");//格式同上
StringBuffer content = new StringBuffer();
FjDAO FjDAO = new FjDAO();
FjPO  fjPO=null;
try {
Transport transport = session.getTransport();
// 设置服务器以及账号和密码
transport.connect("smtp.163.com", 25, "邮箱账号", "邮箱密码");
// 发送的邮箱地址
msg.setFrom(new InternetAddress("邮箱地址"));
msg.setSubject("设置主题");//设置主题
content.append("<STYLE>BLOCKQUOTE {  MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 2em} ")
.append("OL {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px}")
.append("UL {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px}")
.append("P {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px}")
.append("DIV.FoxDiv20140620105608982892 {LINE-HEIGHT: 1.5; MARGIN: 10px; FONT-FAMILY: 微软雅黑; COLOR: #000000; FONT-SIZE: 10.5pt}" )
.append("BODY {LINE-HEIGHT: 1.5; FONT-FAMILY: 微软雅黑; COLOR: #000080; FONT-SIZE: 10.5pt}")
.append("</STYLE><STYLE>BLOCKQUOTE {MARGIN-TOP: 0px}")
.append("OL {MARGIN-TOP: 0px}" )
.append("UL {MARGIN-TOP: 0px}")
.append("</STYLE>" )
.append("<DIV>各位好:<DIV>" );
content.append("<DIV>      ").append("邮件正文").append("</DIV>");
content.append("<DIV> </DIV>" )
.append("<HR style='WIDTH: 210px; HEIGHT: 1px' align='left' color='#b5c4df' SIZE='1'><DIV><SPAN>发件人姓名</SPAN></DIV>");
msg.setContent(content.toString(),  "text/html; charset=UTF-8;");
msg.setSentDate(new Date());//发送时间
// 添加邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(content.toString(), "text/html;charset=UTF-8");
// 后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
mp.addBodyPart(contentPart);
StringBuffer sb = new StringBuffer();
//附件可以从数据库中批量查找
//组装附件查询语句
sb.append(" ID='").append(PO.getId()).append("'");
List result = new ArrayList();
result = fjDAO.getList(sb.toString());
Vector file = new Vector();
for(int i=0;i<result.size();i++){
fjPO=(FjPO) result.get(i);
//附件路径+名称放入file中
file.addElement(fjPO.getFjlj());
}
// 利用枚举器方便的遍历集合
Enumeration efile = file.elements();
String filename = "";
// 检查序列中是否还有更多的对象
while (efile.hasMoreElements()) {
MimeBodyPart mbp = new MimeBodyPart();
// 选择出每一个附件名
filename = efile.nextElement().toString();
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到文件名同样至入BodyPart
mbp.setFileName(MimeUtility.encodeWord(fds.getName()));
mp.addBodyPart(mbp);
}
// 移走集合中的所有元素
file.removeAllElements();
// Multipart加入到信件
msg.setContent(mp);
msg.setContent(mp);
// 发送到的邮箱地址
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(sendAddress.toString())); // 收件人
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(sendCSAddress.toString())); // 抄送人
transport.sendMessage(msg, msg.getAllRecipients()); //发送
transport.close();
} catch (Exception e) {
e.printStackTrace();
return "0";
}
}
}

java发送带格式邮件及带多附件相关推荐

  1. java发送pdf格式邮件_java – 以Pdf附件的形式发送电子邮件作为流

    我想发送一个Pdf作为电子邮件附件(我正在使用JavaMail API).我把Pdf(由jasper生成)作为byte []. public InputStream exportPdfToInputS ...

  2. 【干货】使用Java发送各种格式的邮件

    测试可用: 有些重复代码没有给注释.类的方法作用自行查看API了解,最后附上源码. 首先使用JavaMail的jar,官网可下载. 公共静态的常量: public final static Strin ...

  3. 使用Java发送各种格式的邮件

    转自:https://blog.csdn.net/u011031689/article/details/51326595 测试可用: 有些重复代码没有给注释.类的方法作用自行查看API了解,最后附上源 ...

  4. Java Mail+Thymeleaf模板引擎实现发送HTML格式邮件

    Java Mail+Thymeleaf模板引擎实现发送HTML格式邮件 基于Spring boot 1.5,Spring boot 2.x请使用Spring boot mail 1.依赖坐标 // b ...

  5. java发送get请求,并带上参数,HTTP和HTTPS都可以

    //java发送get请求,并带上参数public static String send_Get(String encode_data){CloseableHttpClient httpClient ...

  6. java使用smtp发送html格式邮件

    java 使用 smtf 发送html格式 邮件 Smtp邮件篇 java发送邮件 第一步 1.以网易邮箱为例,首先需要授权邮箱账号可以支持smtp: 开启之后我们需要生成邮箱第三方登陆的授权码,完成 ...

  7. java发送图片_Java发送邮件(图片、附件、HTML)

    一.简介 要在网络上实现邮件功能,必须要有专门的邮件服务器.这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服务器地址: 一般是 ...

  8. JavaWeb--邮件发送(web注册邮件,纯文本邮件,带图片邮件,带附件邮件)

    邮件服务器与传输协议 发送邮件:SMTP协议 通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器). 接收邮件:POP3协议 通常把处理用户pop3请求(邮件接收请 ...

  9. javamail复杂格式邮件,带附件,html格式,d图片,超链接

    导入jar包: package com.test.javamail; import java.io.FileOutputStream; import java.io.OutputStream; imp ...

最新文章

  1. Java访问Redis
  2. map初始化_您可曾这样初始化一个map呢?
  3. ffmpeg解码流程 turorial5详解
  4. chunk_split_PHP chunk_split()函数与示例
  5. 漫画:从修灯泡来看各种 IT 岗位,你是哪一种?
  6. OSTimeGet()--获取当前时间
  7. Linux下载工具wget详解
  8. Vue左边与右边内容相关联
  9. MDX Cookbook 08 - 基于集合上的迭代递归
  10. VJC案例-风扇定时
  11. 简介计算机桌面功能,desktopcal电脑桌面日历功能介绍
  12. 理解Kademlia协议原理
  13. 【历史上的今天】1 月 28 日:Sun 联合创始人诞生;图灵奖数据库先驱逝世;雅虎收购 GeoCities
  14. 怎么做浪漫表白二维码?给喜欢的人制作一个二维码
  15. Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)
  16. Edge浏览器上方不展示收藏夹的内容
  17. 音视频开发(三十四):天空盒的实现原理
  18. 【自学笔记】尚硅谷数据结构与算法Chapter 2 稀疏数组和队列
  19. 微信小程序学习——wx.for的使用
  20. [分享]PHP多城市版-房产系统源码,仿贝壳房产。

热门文章

  1. Karl Guttag:Magic Leap 2光学解析,部分指标超HoloLens 2
  2. 2007年简历版本。
  3. BandZIP无广告版(v6.25)安装及禁止联网设置
  4. mysql mpm_Zabbix Mysql Fpmmm(MPM)监控的教程
  5. msi笔记本u盘装linux,微星msi电脑重装系统_微星笔记本一键U盘重装系统教程图解...
  6. math sub Java_java初学减法运算
  7. 压力测试-Jmeter脚本录制方案
  8. office2016安装后右键新建没有word、excel、ppt等解决方法
  9. PHPEMS +XAMPP 验证码显示不出来解决方法
  10. 真假屏幕测试软件,如何检测4K电视屏幕的真伪,漏出死像素?一键识别两种工具!...