参考网址:http://www.cnblogs.com/LUA123/p/5575134.html ,谢谢!

package net.common.utils.common;

import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message;
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 org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.sun.mail.util.MailSSLSocketFactory; /**
*
* 类描述: 用于SSL邮件发送,QQ企业邮箱测试通过。
*
*/
public class SslMailUtil { private final Logger logger = LoggerFactory.getLogger(SslMailUtil.class); private String account; // 登录用户名
private String pass; // 登录密码
private String host; // 服务器地址(邮件服务器)
private String port; // 端口
private String protocol = "smtp"; // 协议
private boolean isDebug = false;// 是否开启debug模式 public SslMailUtil(String account, String pass, String host, String port) {
super();
this.account = account;
this.pass = pass;
this.host = host;
this.port = port;
} class MyAuthenricator extends Authenticator {
String u = null;
String p = null; public MyAuthenricator(String u, String p) {
this.u = u;
this.p = p;
} protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(u, p);
}
} /**
* 发送邮件
*
* @param to
* 收件人
* @param subject
* 主题
* @param content
* 内容
*/
public void send(String to, String subject, String content) throws Exception {
this.send(null, to, subject, content, null);
} /**
* 发送邮件
*
* @param to
* 收件人
* @param subject
* 主题
* @param content
* 内容
* @param attachment
* 附件
*/
public void send(String to, String subject, String content, List<File> attachment) throws Exception {
this.send(null, to, subject, content, attachment);
} /**
* 发送邮件
*
* @param alias
* 发件人别名
* @param to
* 收件人
* @param subject
* 主题
* @param content
* 内容
* @param attachment
* 附件
*/
public void send(String alias, String to, String subject, String content, List<File> attachment) throws Exception {
Properties properties = this.getProperties();
// 使用SSL,企业邮箱必需, 开启安全协议
try {
// 邮件会话
Session session = this.getSession(properties);
// 设置邮件内容
MimeMessage mimeMessage = this.getMimeMessage(session, alias, to, subject, content, attachment);
// 发送邮件
Transport.send(mimeMessage);
} catch (Exception e) {
logger.error(e.toString());
throw e;
}
} private Properties getProperties() {
Properties properties = new Properties();
// 协议
properties.setProperty("mail.transport.protocol", protocol);
// 服务器
properties.setProperty("mail.smtp.host", this.host);
// 端口
properties.setProperty("mail.smtp.port", this.port);
// 使用smtp身份验证
properties.setProperty("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");
return properties;
} private Session getSession(Properties properties) throws Exception {
MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
mailSSLSocketFactory.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
Session session = Session.getDefaultInstance(properties, new MyAuthenricator(this.account, this.pass));
session.setDebug(this.isDebug);
return session;
} private MimeMessage getMimeMessage(Session session, String alias, String to, String subject, String content,
List<File> attachment) throws Exception {
MimeMessage mimeMessage = new MimeMessage(session);
// 如果没有设置别名,则默认为发件人的邮箱账号
if (StringUtils.isBlank(alias)) {
alias = this.account;
}
//发件人账号以及别名
mimeMessage.setFrom(new InternetAddress(this.account, alias));
// 收件人
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 主题
mimeMessage.setSubject(subject);
// 时间
mimeMessage.setSentDate(new Date());
// 容器类,可以包含多个MimeBodyPart对象
Multipart multipart = new MimeMultipart();
// MimeBodyPart可以包装文本,图片,附件
MimeBodyPart mimeBodyPart = new MimeBodyPart();
// HTML正文,可以添加多个附件
mimeBodyPart.setContent(content, "text/html; charset=UTF-8");
multipart.addBodyPart(mimeBodyPart);
if (attachment != null && !attachment.isEmpty()) {
for (File file : attachment) {
// 添加图片&附件

if (file.exists() && file.isFile()) {
  mimeBodyPart = new MimeBodyPart();
  mimeBodyPart.attachFile(file);
  multipart.addBodyPart(mimeBodyPart);
}

      }
}
// 设置邮件内容
mimeMessage.setContent(multipart);
// 仅仅发送文本
// mimeMessage.setText(content);
mimeMessage.saveChanges();
return mimeMessage;
} /**
* 获得:是否开启debug模式
*
* @return the isDebug
*/
public final boolean isDebug() {
return isDebug;
} /**
* 设置:是否开启debug模式
*
* @param isDebug
* the isDebug to set
*/
public final void setDebug(boolean isDebug) {
this.isDebug = isDebug;
} }

SSL邮件发送(腾讯企业邮箱测试通过,可以支持多附件)的更多相关文章

  1. centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课

    centos   邮件服务  腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25  收邮件协议:pop3 端口110  iredmail安装配置 ...

  2. python使用smtplib和email发送腾讯企业邮箱邮件

    公司每天要发送日报,最近没事搞了一下如何自动发邮件,用的是腾讯企业邮箱,跟大家分享一下我的研究过程吧. 以前弄的发邮件的是用qq邮箱发的,当时在网上查资料最后达到了能发图片,网页,自定义收件人展示,主 ...

  3. C#发送腾讯企业邮箱

    腾讯企业邮箱客户端配置介绍 http://email-qq.cn/tengxun/201610303793.html?akvezc=smt0n2 POP3/SMTP协议 POP3/SMTP协议: 接收 ...

  4. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件

    说实话腾讯的企业邮箱真心不错! 腾讯企业邮箱官网:http://exmail.qq.com/login/ 新用户注册:http://exmail.qq.com/onlinesell/intro 点击开 ...

  5. 记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败的原因

    今天在弄企业邮箱推送的东西,原版代码是这样的 public void SendEmail(string title, string content) { try { MailMessage mailM ...

  6. 利用腾讯企业邮箱开放API获取账户未读邮件数初探

    公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...

  7. 腾讯企业邮箱SMTP-邮件发送失败异常:“ SMTPSendFailedException:501 ϵͳÒÑÇ¿ÖÆ¿ªÆôÕʺÅÉý¼¶ÉèÖã¬ÇëµÇ¼e

    这里我们在报警发送邮件用的是腾讯的企业邮箱,突然这两天没有报警邮件,很是奇怪 发送邮件报错 SMTP-邮件发送失败异常:“ SMTPSendFailedException:501 ϵͳÒÑÇ¿ÖÆ ...

  8. MVC4/5+jquery+bootstrap样式+dataTables+linq+WCF+EF6后台和前台的框架集合!好蛋疼哦!数据库支持MYSQL 和MSSQL,oracle。集成腾讯企业邮箱收邮件同步用户SSO登陆等功能。

    花费了我好多心血,才做出来,下个项目准备用这个框架! 大家有没有做这方面的可以交流一下! 花费了我好多心血,才做出来,下个项目准备用这个框架! 大家有没有做这方面的可以交流一下! 花费了我好多心血,才 ...

  9. 腾讯企业邮箱又一次隐藏了qq邮件列表的入口

    今天登陆腾讯企业邮箱,发现腾讯企业邮箱又一次隐藏了qq邮件列表的入口,很不方便操作, 我们切换到工具箱选项,然后随便点击里面的一个工具,比如:企业网盘,然后看浏览器地址栏的地址如下:http://ex ...

随机推荐

  1. Linux基础四(服务管理)

    目录 一.简介与分类 1.系统的默认运行级别 2.服务的分类 3.服务与端口 二.服务管理 1.RPM包服务管理 2.源码包服务管理 三.服务管理总结 一.简介与分类 1. 系统的运行级别 1.1 默 ...

  2. java 调用 C# webapi

    最近项目需要 java调用  .net 的webapi. 对于get来说很简单,但是post方法遇到了些问题,最后也是曲线救国. 先看代码 Java  代码 public static void ma ...

  3. The Two Routes CodeForces - 601A(水最短路)

    一个完全图 1和n肯定有一条路  不是公路就是铁路  另= 另一个跑遍最短路即可 #include <bits/stdc++.h> #define mem(a, b) memset(a, ...

  4. idea和eclipse的区别

    使用基于IntelliJ的IDE,都会对project和module的关系比较糊涂.用简单的一句话来概括是: IntelliJ系中的Project相当于Eclipse系中的workspace.Inte ...

  5. MT【172】内外圆

    $P,Q$是两个定点,M为平面内一个动点,且$\dfrac{|MP|}{|MQ|}=\lambda(\lambda>0,\lambda\ne1)$, 点M的轨迹围成的区域面积为S , 设$S=f ...

  6. 【刷题】BZOJ 4195 [Noi2015]程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或x ...

  7. 洛谷 P2047 [NOI2007]社交网络 解题报告

    P2047 [NOI2007]社交网络 题目描述 在社交网络(\(social\) \(network\))的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有\ ...

  8. 【LOJ#10064】黑暗城堡

    题目大意:定义一个无向图的最短路径生成树如下:在该无向图的生成树中,任意一个节点到根节点的距离均等于根节点到该节点的最短路.求有多少种最短路径生成树. 题解:首先跑一遍 dij 求出从根节点到每个节点 ...

  9. ELK应用之一:ELK平台搭建部署

    一.获取安装包: EKL官网:https://www.elastic.co/products 二.安装Elasticsearch 2.1.解压安装包,在安装目录创建data和logs目录,并在配置文件 ...

  10. OpenStack 网络服务 Neutron 私有网络构建(十九)

    本章内容基于之前提供者网络构建的基础上进行改动,之前文章参考如下: Openstack 网络服务 Neutron介绍和控制节点部署 (九) Openstack 网络服务 Neutron计算节点部署(十 ...