一个支持邮件带附件群发的java类
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
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;
public class MailUtils {
private static String host;
private static String username;
private static String password;
private static String from;
private static String nick;
static {
try {
// Test Data
host = "smtp.163.com";
username = "13524929813@163.com";
password = "zhao123";
from = "13524929813@163.com";
nick = "测试邮件";
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 发送邮件
*
* @param to
* 收件人列表,以","分割
* @param subject
* 标题
* @param body
* 内容
* @param filepath
* 附件列表,无附件传递null
* @return
* @throws MessagingException
* @throws AddressException
* @throws UnsupportedEncodingException
*/
public static boolean sendMail(String to, String subject, String body,
List<String> filepath) throws AddressException, MessagingException,
UnsupportedEncodingException {
// 参数修饰
if (body == null) {
body = "";
}
if (subject == null) {
subject = "无主题";
}
// 创建Properties对象
Properties props = System.getProperties();
// 创建信件服务器
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 通过验证
// 得到默认的对话对象
Session session = Session.getDefaultInstance(props, null);
// 创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
nick = MimeUtility.encodeText(nick);
msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
// 创建收件人列表
if (to != null && to.trim().length() > 0) {
String[] arr = to.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i]);
}
msg.addRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// 后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
// 附件操作
if (filepath != null && filepath.size() > 0) {
for (String filename : filepath) {
MimeBodyPart mbp = new MimeBodyPart();
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
mp.addBodyPart(mbp);
// 移走集合中的所有元素
filepath.clear();
// Multipart加入到信件
msg.setContent(mp);
} else {
// 设置邮件正文
msg.setText(body);
}
// 设置信件头的发送日期
msg.setSentDate(new Date());
msg.saveChanges();
// 发送信件
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(msg,
msg.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
} else {
System.out.println("None receiver!");
return false;
}
} else {
System.out.println("None receiver!");
return false;
}
}
public static void main(String[] args) {
List<String> filepath = new ArrayList<>();
filepath.add("D:\\pic\\db7ebd481f59485291af475de2f495e5.jpg");
filepath.add("D:\\pic\\20170726144715.jpg");
try {
sendMail("xuxiaorong@001bank.com,yangcong@001bank.com", "群发带附件测试邮件", "测试邮件,有附件",
filepath);
} catch (UnsupportedEncodingException | MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
一个支持邮件带附件群发的java类的更多相关文章
- php通过JavaBridge调用Java类库和不带包的自定义java类成功 但是调用带包的自定义Java类报错,该怎么解决
php通过JavaBridge调用Java类库和不带包的自定义java类成功 但是调用带包的自定义Java类报错,Class.forName("com.mysql.jdbc.Driver&q ...
- Java 阿里云 邮件(带附件)发送
简单的使用. 阿里云每天免费200封 1000封才2块钱..465端口 使用正常25 端口 不正常 package com.gwzx.framework.utils; import java.util ...
- python 发邮件-带附件-文本-html
#!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...
- python 发送email邮件带附件
EMAIL功能实现: 1.发送EMAIL带附件,并且带压缩文件夹做为附件 #_*_coding:utf-8_*_ import smtplib from email.mime.text import ...
- Java发邮件带附件测试通过
package cn.bric.crm.util; import java.util.Date; import java.util.Enumeration; import java.util.Prop ...
- Java发邮件带附件(且重命名附件)
环境:spring3.2.2+jquery 用户的附件管理要实现发送附件可以是单个也可以是多个.由于用户在上传附件的时候采用了重命名机制,所以存在服务器上的文件是重命名后的文件,如果用户要将文件以邮件 ...
- 邮件带附件和html格式
1. 发送有附件的邮件需要添加一个附件类Attachment,这个附件可以为文件和图片: Attachment attach = new Attachment(“文件路径”");//文件 A ...
- kettle 发邮件带附件
新建一个job,主要用到的组件有两个,如下图: 首先点击下图的文件,选择你要做为邮件附件的文件.选完后会在前辈的文件.目录中显示.然后点击增加,会下面文件列表中显示已经添加的文件(涂黄色的部分) 按下 ...
- C# 模拟提交带附件(input type=file)的表单
今天调用某API时,对于文档中的传入参数:File[] 类型,感觉很陌生,无从下手! 按通常的方式在json参数中加入file的二进制数据提交,一直报错(参数错误)!后来经过多方咨询,是要换一种 表单 ...
随机推荐
- Ado.net简单快捷帮助类
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...
- [Z]Spring Data JPA 之 一对一,一对多,多对多 关系映射
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
- 函数 day9
一,什么是函数? 函数的定义与调用 s = 'fkdsagadfdsagfdsagg' count = 0 for i in s: count += 1 print(count) l1 = [1,2, ...
- c#程序设计原则
单一职责 开闭原则:对扩展开放,对修改封闭. 方法 的职责,一个方法做的事越多,造成问题的可能性会增加. 解决的方法1:就是分拆2:写单独类
- 解决sublime3不能编辑插件default settings的问题
一.遇见问题 今天给sublime安装了View In Browser,想更改一下默认启动的浏览器 preferences-Package settings-View In Browser-setti ...
- BZOJ2721或洛谷1445 [Violet]樱花
BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...
- LocalStorage的一些使用
LocalStorage是什么 LocalStorage 是在Html5中出现的一种本地存储.说到本地存储,大家立马会联想到Cookie,还有SqlLite. LocalStorage 中的数据不会像 ...
- Numpy 学习 array np.where lexsort 切片 按行按列求平均mean
array 的创建可以通过list给 array print出来像一个表格,可以按行按列来观察. 原来是一个list相当于一行 np.where用于寻找一个condition下的坐标,返回的是一个2个 ...
- UI设计:C4D作品案例分享
中文名4D电影,外文名CINEMA 4D,研发公司为德国Maxon Computer,特点为极高的运算速度和强大的渲染插件,使用在电影<毁灭战士>.<阿凡达>中,获得贸易展中最 ...
- MySQL中的联结表
使用联结能够实现用一条SELECT语句检索出存储在多个表中的数据.联结是一种机制,用来在一条SELECT语句中关联表,不是物理实体,其在实际的数据库表中并不存在,DBMS会根据需要建立联结,且会在查询 ...