1、配置依赖

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version>
</dependency>

2、工具类

package com.thorgene.clinical.utils;import java.io.IOException;
import java.io.InputStream;
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.Address;
import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;public class MailUtil {private static final String ALIDM_SMTP_HOST = "smtp.企业域名.com";private static final int ALIDM_SMTP_PORT = 25;// 或80private static String user;         //发件人的账号private static String password;     //发件人的密码private static String receiveUser;  //收件人private static String ccUser;      //抄送人//配置文件读取static {InputStream is = MailUtil.class.getResourceAsStream("/application.properties");Properties prop = new Properties();try {prop.load(is);} catch (IOException e1) {e1.printStackTrace();}user = prop.getProperty("mail.user");password = prop.getProperty("mail.password");receiveUser = prop.getProperty("mail.receiveUser");ccUser = prop.getProperty("mail.ccUser");}public static void main(String[] args) {List<String> fileList = new ArrayList<String>();fileList.add("/private/tmp/11111.docx");fileList.add("/private/tmp/22222.docx");send("测试主题", "测试正文", fileList);}/*** 发送邮件* @param toEmail  收件人邮箱地址* @param subject  邮件标题* @param content  邮件内容 可以是html内容* @param filePath  附加路径 */public static void send(String subject, String content, List<String> fileList) {Session mailSession = loadMailSession();//获取session,设置发送邮件属性mailSession.setDebug(true);// 创建邮件消息MimeMessage message = new MimeMessage(mailSession);try {// 设置发件人message.setFrom(new InternetAddress(user));//可选,设置回信地址Address[] a = new Address[1];a[0] = new InternetAddress(user);message.setReplyTo(a);// 设置收件人//InternetAddress to = new InternetAddress("xxxx@qq.com");//message.setRecipient(MimeMessage.RecipientType.TO, to);//如果同时发给多人,才将上面两行替换为如下(因为部分收信系统的一些限制,尽量每次投递给一个人;同时我们限制单次允许发送的人数是30人)String[] receives = receiveUser.split(",");InternetAddress[] adds = new InternetAddress[receives.length];for (int i = 0; i < adds.length; i++) {adds[i] = new InternetAddress(receives[i]);}message.setRecipients(MimeMessage.RecipientType.TO, adds);// 设置多个抄送地址//if(null != ccUser && !ccUser.isEmpty()){//    @SuppressWarnings("static-access")//    InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);//    message.setRecipients(MimeMessage.RecipientType.CC, internetAddressCC);//}Multipart multipart = new MimeMultipart();MimeBodyPart mbpContent = new MimeBodyPart();mbpContent.setText(content);multipart.addBodyPart(mbpContent);//往邮件中添加附件 for (int i = 0; i < fileList.size(); i++) {MimeBodyPart mbpFile = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList.get(i));mbpFile.setDataHandler(new DataHandler(fds));try {mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}multipart.addBodyPart(mbpFile);}message.setContent(multipart);message.setSentDate(new Date());// 设置邮件标题message.setSubject(subject);// 发送邮件Transport.send(message);} catch (MessagingException e) {String err = e.getMessage();// 在这里处理message内容, 格式是固定的System.out.println(err);}}/***  获取session,设置发送邮件属性* @return*/private static Session loadMailSession() {try {// 配置发送邮件的环境属性final Properties props = new Properties();// 表示SMTP发送邮件,需要进行身份验证props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", ALIDM_SMTP_HOST);// props.put("mail.smtp.port", ALIDM_SMTP_PORT);// 如果使用ssl,则去掉使用25端口的配置,进行如下配置,props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.socketFactory.port", "465");props.put("mail.smtp.port", "465");// 发件人的账号props.put("mail.user", user);// 访问SMTP服务时需要提供的密码props.put("mail.password", password);// 构建授权信息,用于进行SMTP进行身份验证Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName = props.getProperty("mail.user");String password = props.getProperty("mail.password");return new PasswordAuthentication(userName, password);}};// 使用环境属性和授权信息,创建邮件会话return Session.getInstance(props, authenticator);} catch (Exception e) {e.printStackTrace();System.out.println("mail session is null");}return null;}
}

阿里云邮箱发送邮件,多人多附件相关推荐

  1. Java MAil 链接阿里云邮箱下载收件箱附件

    配置文件: <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</ ...

  2. 使用javamail、阿里云邮箱发送邮件

    javaMail的maven坐标: <!-- https://mvnrepository.com/artifact/javax.mail/mail --><dependency> ...

  3. 使用阿里云邮箱发送邮件

    代码部分 /*** 发送邮件 (阿里云邮箱企业版)** @param fromEmail* 发送邮箱* @param toEmail* 接收邮箱* @param emailName* 阿里云邮箱登录名 ...

  4. SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)

    目录 一.获取邮箱授权码 二.引入依赖 三.配置文件(请注意yml格式,或者使用.properties) 四.不带附件发邮箱 五.带附件发邮箱 六.邮箱类型拓展 本篇文章以QQ邮箱作为发件人写案例演示 ...

  5. 万网企业邮箱与阿里云邮箱的SMTP、POP设置

    [转载]万网企业邮箱与阿里云邮箱的SMTP.POP设置 1.万网企业邮箱SMTP.POP设置 邮箱管理网址:http://qiye.aliyun.com,其中万网的邮箱也可以配置成自己的域名邮箱,比方 ...

  6. 阿里云邮箱POP3、SMTP设置教程

    3G免费网www.3gmfw.cn免费为你分享 阿里云邮箱POP3.SMTP设置教程,阿里云邮箱 阿里云邮箱POP3设置 阿里云邮箱SMTP设置的相关资源如下: 什么是POP3.SMTP? 阿里云邮箱 ...

  7. 禅道邮箱配置163邮箱/阿里云邮箱区别

    禅道邮箱配置163邮箱/阿里云邮箱区别 禅道支持邮件提醒,当需求.任务.bug等发生变化的时候,可以发邮件提醒.邮件的配置方法如下: 使用管理员登录禅道. 进入后台管理,点击"发信配置&qu ...

  8. 注册 阿里云邮箱 的步骤

    目前阿里云邮箱 不开放注册,只面向 中国雅虎迁移过来的用户. 所以,先注册 中国雅虎即可,再迁移到阿里云邮箱即可. 1.注册中国雅虎 https://login.yahoo.com/config/lo ...

  9. android中集成阿里云金融级实人认证

    上个项目中有用到过这个,现在又要用到,每次都是到官网去看文档去集成,特此记录一下集成的步骤 第一步:打开官网文档阿里云金融级实人认证Android接入文档 去下载最新的sdk,集成到项目中 第二步在需 ...

最新文章

  1. 关于Access数据库执行Update语句后,不报错,但影响行数总是返回0的问题
  2. R语言ggplot2可视化、不同分组使用不同的色彩、同一分组(group)的线条使用相同的色彩但是配置使用不同的线型(line type)
  3. 5分钟搞懂如何使用探针检查Kubernetes健康
  4. 5kyu Some Egyptian fractions
  5. py之patsy:patsy的简介、安装、使用方法之详细攻略
  6. 字节跳动19春招研发第一次笔试-A卷第一题
  7. mysql磁盘临时表清理_mysql 创建大量磁盘临时表
  8. scala 空列表_如何在Scala中展平列表列表?
  9. python爬虫案例——糗事百科数据采集
  10. 解决Nginx环境下wordpress设置固定链接打开失败问题
  11. 基金01、03文件,92、94文件、52、53、59等文件是指什么
  12. 使用yum快速部署Oracle安装环境 11g
  13. 集合经验模态分解matlab,matlab集合经验模态分解EEMD工具包
  14. 英语模板作文,词组,句子,句型,开头
  15. DFS.01-寻路问题
  16. java 解码和加密 汉信码_java中的编码与解码
  17. 短距离无线通信之蓝牙模块
  18. android模拟器转方向,android开发 使用夜神模拟器 屏幕旋转问题
  19. 斐讯空气检测仪M1使用Easylink配置WIFI的图文教程
  20. 《Android开发常用素材网站》

热门文章

  1. npm创建Vue工程【element UI】
  2. web多媒体技术在视频编辑场景的应用
  3. arm交叉编译ntpdate与服务器进行时间同步
  4. win10截图相关教程
  5. vnc下:无法执行默认的终端模拟器
  6. Java 对文件进行重命名操作(rename)
  7. ndows 资源管理器,windows资源管理器不见了.怎么办?
  8. css保持长宽比拉伸,使用CSS保持div的长宽比
  9. win10无限重启_安装 Win10+Ubuntu双系统,让迷你掌上电脑更具生产力
  10. 狗生活在陆地上 java,第四晚,生活在陆地上的鱼