前言

来个需求,需要给注册用户发送特定的邮件内容,所以就有了这篇博文咯。

准备条件(本文以网易邮箱为例)

邮箱账号必须要开启 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利用网易邮箱批量发送邮件(带附件)相关推荐

  1. 内网邮件JAVA535报错_利用网易邮箱发送邮件535报错处理

    相信看到535报错的同学代码编写方面都没有问题,只是不明白为什么填写了帐号密码后还是报535错误,使用网易的126或者163邮箱都会有如此问题. Python报错如下: Traceback (most ...

  2. 网易邮箱批量登泉器v1.0

    文章目录 1. 资源 2. 写在前面 3. 效果 4. 使用说明 5. 代码 5.1. 代码设计原理 5.2. 核心代码 5.3. 完整代码 1. 资源 直接下载点开即可使用 https://www. ...

  3. Lumen / Laravel 使用网易邮箱 SMTP 发送邮件

    Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...

  4. Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件

    2019独角兽企业重金招聘Python工程师标准>>> Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件 ...

  5. 2021-01-3 VBA利用企业邮箱自动发送邮件

    VBA利用企业邮箱自动发送邮件 1.应用场景 2.VBA生成PDF附件 3.企业邮箱设置发送账户 4.VBA利用企业邮箱发送邮件 利用Windows任务计划设置定时执行 小结 1.应用场景 所在企业提 ...

  6. php5.3发送邮件,Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件

    Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...

  7. Java实现QQ邮箱发送给网易邮箱,发送邮件+附件

    实现功能: Java实现 QQ邮箱 给网易邮箱发送邮件 获取邮件信息并下载邮件的附件 前置功能 案例以QQ邮箱为例说明: 首先登录QQ邮箱将SMTP服务开启,会得到一个授权码. 创建一个Springb ...

  8. Java实现发邮件功能---网易邮箱

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  9. 使用java代码实现exchange类型的邮箱进行发送邮件

    一: 我是普通java项目(没有框架没有Maven),需要的jar包(可以去https://mvnrepository.com/下载jar包): javax.mail-1.6.2.jar activa ...

  10. Python 网易邮箱简单发送邮件

    import smtplib #导入PyEmail from email.mime.text import MIMETextmsg_from="130xxxxx490@163.com&quo ...

最新文章

  1. jsonp跨域ajax跨域get方法
  2. Windows安装Pytorch/torchvision
  3. 测试的目的_为什么需要测试?(软件测试的目的)
  4. 把学生类按单科成绩排序_重庆新高考几个核心点:分数线种类、96个志愿、投档排序规则...
  5. LINUX系统中动态链接库的创建与使用
  6. 读取nas_NAS怎么玩?除了存放小姐姐,它竟然还有这些功能
  7. C#编程语言(六):枚举类型与结构类型
  8. linux 文件描述符
  9. 协程asyncio_初识asyncio协程
  10. Netty工作笔记0025---SocketChannel API
  11. spring-第八篇之容器中的bean的生命周期
  12. CentOS中的网络管理
  13. 计算机桌面图标乱了,如何解决电脑桌面图标乱跑的问题
  14. snort 错误 (CentOS 8)
  15. 敏捷开发框架—Scrum
  16. ps自动,批处理,替换原文件夹图片
  17. 面试了一个 37 岁程序员,让我有所触动,35岁以上的程序员该何去何从?
  18. react开发vscode插件推荐
  19. 阿里天池:淘宝用户行为分析项目
  20. 第七天 黑马十次方 吐槽列表与详细页、发吐槽与评论功能、问答频道功能、掌握DataURL和阿里云OSS

热门文章

  1. 英语单词词性顺口溜_英语单词词性分类
  2. 科研绘图,看这一篇就够了(内含免费送书活动)
  3. 无人机航摄地面站航线设计主要参数
  4. win7怎样修改文件后缀名
  5. 裁判文书网数据采集爬虫2021-08
  6. 实现 Git 目录权限控制
  7. 聊聊页面中的锚点效果和回到顶部
  8. 不同类编程语言的特点
  9. 《游戏系统设计一》游戏任务系统太复杂,带你一步一步实现
  10. 数据库中的主键、超键、候选键、外键