SSL邮件发送(腾讯企业邮箱测试通过,可以支持多附件)
参考网址: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邮件发送(腾讯企业邮箱测试通过,可以支持多附件)的更多相关文章
- centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 ...
- python使用smtplib和email发送腾讯企业邮箱邮件
公司每天要发送日报,最近没事搞了一下如何自动发邮件,用的是腾讯企业邮箱,跟大家分享一下我的研究过程吧. 以前弄的发邮件的是用qq邮箱发的,当时在网上查资料最后达到了能发图片,网页,自定义收件人展示,主 ...
- C#发送腾讯企业邮箱
腾讯企业邮箱客户端配置介绍 http://email-qq.cn/tengxun/201610303793.html?akvezc=smt0n2 POP3/SMTP协议 POP3/SMTP协议: 接收 ...
- Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
说实话腾讯的企业邮箱真心不错! 腾讯企业邮箱官网:http://exmail.qq.com/login/ 新用户注册:http://exmail.qq.com/onlinesell/intro 点击开 ...
- 记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败的原因
今天在弄企业邮箱推送的东西,原版代码是这样的 public void SendEmail(string title, string content) { try { MailMessage mailM ...
- 利用腾讯企业邮箱开放API获取账户未读邮件数初探
公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...
- 腾讯企业邮箱SMTP-邮件发送失败异常:“ SMTPSendFailedException:501 ϵͳÒÑÇ¿ÖÆ¿ªÆôÕʺÅÉý¼¶ÉèÖã¬ÇëµÇ¼e
这里我们在报警发送邮件用的是腾讯的企业邮箱,突然这两天没有报警邮件,很是奇怪 发送邮件报错 SMTP-邮件发送失败异常:“ SMTPSendFailedException:501 ϵͳÒÑÇ¿ÖÆ ...
- MVC4/5+jquery+bootstrap样式+dataTables+linq+WCF+EF6后台和前台的框架集合!好蛋疼哦!数据库支持MYSQL 和MSSQL,oracle。集成腾讯企业邮箱收邮件同步用户SSO登陆等功能。
花费了我好多心血,才做出来,下个项目准备用这个框架! 大家有没有做这方面的可以交流一下! 花费了我好多心血,才做出来,下个项目准备用这个框架! 大家有没有做这方面的可以交流一下! 花费了我好多心血,才 ...
- 腾讯企业邮箱又一次隐藏了qq邮件列表的入口
今天登陆腾讯企业邮箱,发现腾讯企业邮箱又一次隐藏了qq邮件列表的入口,很不方便操作, 我们切换到工具箱选项,然后随便点击里面的一个工具,比如:企业网盘,然后看浏览器地址栏的地址如下:http://ex ...
随机推荐
- Alpha 冲刺八
团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 完善各自部分 项目描 ...
- [转帖] mysql 用户 权限 密码等操作记录
前言 From :https://blog.csdn.net/yu12377/article/details/78214336 mysql5.7版本中用户管理与以前版本略有不同,在此记录,以备忘 登陆 ...
- 深入理解C++中的异常处理机制
异常处理 增强错误恢复能力是提高代码健壮性的最有力的途径之一,C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编 写错误处理代码,这样会使得其变得笨拙和难以使用.C ...
- Java时间的转换
String DATE_FORMAT = "yyyy-MM-dd"; LocalDate localDate = LocalDate.now(); long startTime = ...
- jmeter之 jp@gc - Stepping Thread Group
1. 安装好插件 参考文档“扩展Jmeter插件获取更多监听器” 2. 添加线程组 右键测试计划->添加->Threads(Users)->jp@gc - Stepping ...
- 【设计模式】—— 命令模式Commond
前言:[模式总览]——————————by xingoo 模式意图 将一个请求封装成一个对象,从而对这个命令执行撤销.重做等操作. 典型的Eclipse开发中,编辑器的操作就需要用到这个模式,比如Un ...
- SpringBoot设置事务隔离等级
"If you're gonna play the game, boy, ya gotta learn to play it right" Spring Boot 使用事务非常简单 ...
- MT【88】抽象函数
分析:此类题一般有两种做法,第一种按解答题做法, 第二种作为填空题找对应的特殊函数,比如这里可以根据三角里和差化积得出$f(x)=\frac{1}{2}cos(\frac{\pi}{3}x)$
- 【题解】 [HNOI/AHOI2018]道路 (动态规划)
懒得复制,戳我戳我 Solution: \(dp[i][j][k]\)以\(i\)为子树根节点,到根节点中有\(j\)条公路没修,\(k\)条铁路没修,存子树不便利和 \(dp[i][j][k]=mi ...
- hadoop2相对hadoop1有非常重大的改进
hadoop2相对hadoop1有非常重大的改进. 下面看一下在HDFS和MapReduce方面的改进: HDFS Federation(HDFS联邦)federation-background[1] ...