java 批量发送邮件,java利用网易邮箱批量发送邮件(带附件)
前言
来个需求,需要给注册用户发送特定的邮件内容,所以就有了这篇博文咯。
准备条件(本文以网易邮箱为例)
邮箱账号必须要开启 SMTP 服务
设置授权码
编码实现
maven
com.sun.mail
javax.mail
1.4.7
EmailUtil
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Properties;
/**
* @Author 954
* @create 2019/6/27 13:46
*/
public class EmailUtil {
// 发送者别名
private static final String SENDER_NAME = "XXX" ;
// 发送邮箱地址
private static final String SENDER_ADDRESS = "XXX@163.com" ;
// 发送邮箱的授权码
private static final String SENDER_PWD = "XXX" ;
// 密送的邮箱地址
private static final String PRIVATE_ADDRESS = "XXX@163.com" ;
/**
* 发送邮件的环境对象
*/
private static final Session EMAIL_SESSION = getEmailSession();
/**
* 批量发送电子邮件
* @param emailAddressList 邮箱地址
* @param content 邮件内容
* @param title 邮件标题
* @param fileList 附件
* @throws Exception
*/
public synchronized void sendEmail(ListemailAddressList, String title, String content, ListfileList) throws Exception {
MimeMessage mimeMessage = getMimeMessage(emailAddressList, title, content);
if (!CollectionUtils.isEmpty(fileList)){
// 处理附件
Multipart multipart = getMultipart(fileList);
mimeMessage.setContent(multipart);
// 添加邮件内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(content, "text/html;charset=UTF-8");
// 将multipart对象放入message中
multipart.addBodyPart(contentPart);
}
Transport.send(mimeMessage);
}
private MimeMessage getMimeMessage(ListemailAddressList, String title, String content) throws Exception {
// 创建邮件消息
MimeMessage message = new MimeMessage(EMAIL_SESSION);
// 设置发件人
message.setFrom(new InternetAddress(SENDER_ADDRESS, SENDER_NAME));
// 设置收件人
InternetAddress[] address = new InternetAddress[emailAddressList.size()] ;
for (int i = 0; i < emailAddressList.size(); i++){
address[i] = new InternetAddress(emailAddressList.get(i)) ;
}
message.setRecipients(Message.RecipientType.TO, address);
// 设置密送
message.setRecipient(Message.RecipientType.BCC, new InternetAddress(PRIVATE_ADDRESS));
// 设置邮件标题
message.setSubject(title, "UTF-8");
// 设置邮件的内容体
message.setContent(content, "text/html;charset=UTF-8");
// 设置发送时间
message.setSentDate(new Date());
return message;
}
private Multipart getMultipart(ListfileList) {
if (CollectionUtils.isEmpty(fileList)) return null;
Multipart multipart = new MimeMultipart();
// 添加附件的内容
fileList.stream().parallel().forEach(file -> {
try {
BodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
attachmentBodyPart.setDataHandler(new DataHandler(source));
// MimeUtility.encodeWord可以避免文件名乱码
attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));
multipart.addBodyPart(attachmentBodyPart);
} catch (Exception e) {
e.printStackTrace();
}
});
return multipart ;
}
private static Session getEmailSession(){
// 配置发送邮件的环境属性
Properties props = new Properties();
//设置用户的认证方式
props.setProperty("mail.smtp.auth", "true");
//设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
//设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", "smtp.163.com");
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
return new PasswordAuthentication(SENDER_ADDRESS, SENDER_PWD);
}
};
return Session.getInstance(props, authenticator);
}
public static void main(String[] args) throws Exception {
sendEmail(Arrays.asList("XXX@qq.com", "XXX@163.com"), "我是标题", "我是内容", null);
}
}
转载带地址,谢谢!
对你有帮助的话,右上角给个赞呗~
java 批量发送邮件,java利用网易邮箱批量发送邮件(带附件)相关推荐
- 内网邮件JAVA535报错_利用网易邮箱发送邮件535报错处理
相信看到535报错的同学代码编写方面都没有问题,只是不明白为什么填写了帐号密码后还是报535错误,使用网易的126或者163邮箱都会有如此问题. Python报错如下: Traceback (most ...
- 网易邮箱批量登泉器v1.0
文章目录 1. 资源 2. 写在前面 3. 效果 4. 使用说明 5. 代码 5.1. 代码设计原理 5.2. 核心代码 5.3. 完整代码 1. 资源 直接下载点开即可使用 https://www. ...
- Lumen / Laravel 使用网易邮箱 SMTP 发送邮件
Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...
- Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件
2019独角兽企业重金招聘Python工程师标准>>> Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件 ...
- 2021-01-3 VBA利用企业邮箱自动发送邮件
VBA利用企业邮箱自动发送邮件 1.应用场景 2.VBA生成PDF附件 3.企业邮箱设置发送账户 4.VBA利用企业邮箱发送邮件 利用Windows任务计划设置定时执行 小结 1.应用场景 所在企业提 ...
- php5.3发送邮件,Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件
Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...
- Java实现QQ邮箱发送给网易邮箱,发送邮件+附件
实现功能: Java实现 QQ邮箱 给网易邮箱发送邮件 获取邮件信息并下载邮件的附件 前置功能 案例以QQ邮箱为例说明: 首先登录QQ邮箱将SMTP服务开启,会得到一个授权码. 创建一个Springb ...
- Java实现发邮件功能---网易邮箱
目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...
- 使用java代码实现exchange类型的邮箱进行发送邮件
一: 我是普通java项目(没有框架没有Maven),需要的jar包(可以去https://mvnrepository.com/下载jar包): javax.mail-1.6.2.jar activa ...
- Python 网易邮箱简单发送邮件
import smtplib #导入PyEmail from email.mime.text import MIMETextmsg_from="130xxxxx490@163.com&quo ...
最新文章
- jsonp跨域ajax跨域get方法
- Windows安装Pytorch/torchvision
- 测试的目的_为什么需要测试?(软件测试的目的)
- 把学生类按单科成绩排序_重庆新高考几个核心点:分数线种类、96个志愿、投档排序规则...
- LINUX系统中动态链接库的创建与使用
- 读取nas_NAS怎么玩?除了存放小姐姐,它竟然还有这些功能
- C#编程语言(六):枚举类型与结构类型
- linux 文件描述符
- 协程asyncio_初识asyncio协程
- Netty工作笔记0025---SocketChannel API
- spring-第八篇之容器中的bean的生命周期
- CentOS中的网络管理
- 计算机桌面图标乱了,如何解决电脑桌面图标乱跑的问题
- snort 错误 (CentOS 8)
- 敏捷开发框架—Scrum
- ps自动,批处理,替换原文件夹图片
- 面试了一个 37 岁程序员,让我有所触动,35岁以上的程序员该何去何从?
- react开发vscode插件推荐
- 阿里天池:淘宝用户行为分析项目
- 第七天 黑马十次方 吐槽列表与详细页、发吐槽与评论功能、问答频道功能、掌握DataURL和阿里云OSS