Java邮件发送解决ssl javax.mail实现方式
package test; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import java.io.ByteArrayInputStream;
import java.util.Properties; /**
* Java邮件发送解决ssl javax.mail实现方式
* Caused by: javax.mail.AuthenticationFailedException: 535 5.7.0 ERR.LOGIN.NONSSL
需要add 解决ssl发送邮件 属性的配置
*/
public class MultiEmailTest {
private static Logger logger = LoggerFactory.getLogger(MultiEmailV3.class);
/**
* 系统属性
*/
private static Properties props = System.getProperties(); /**
* 邮件会话对象
*/
private static Session session; /**
* MIME邮件对象
*/
private static MimeMessage mimeMsg;
private static Multipart mp = null;
private static final String HOST_NAME = "smtp.qiye.163.com"; //邮件服务器 可配
private static final String FROM_ADDR = "xxx@xx.com"; //邮件发送者地址 可配
private static final String FROM_NAME = "xxx@xx.com"; //邮件发送者名称 可配
private static final String FROM_PWD = "xx"; //邮件发送者密码 可配 private static final String SMTP = "smtp";
static{
//add 解决ssl发送邮件
props.put("mail.smtp.starttls.enable",true);
} /**
* 发送邮件
* @param tos 收件人
* @param copyTos 抄送人
* @param subject 主题(标题)
* @param content 正文(内容)
* @throws Exception 异常
*/
public static void sendMail(String[] tos, String[] copyTos, String subject, String content) throws Exception {
// Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
BodyPart bp = setBodyPart(tos, subject, content);
send(copyTos, bp);
} /**
* 发送邮件(带附件)
* @param tos 收件人
* @param copyTos 抄送人
* @param subject 主题(标题)
* @param content 正文(内容)
* @throws Exception 异常
*/
public static void sendMailAttachment(String[] tos, String[] copyTos, String subject, String content, ByteArrayInputStream stream, String fileName, String type) throws Exception {
// Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
BodyPart bp = setBodyPart(tos, subject, content);
// 邮件内容部分2---附件1
MimeBodyPart body1 = new MimeBodyPart();
DataSource dataSource1 = new ByteArrayDataSource(stream, type);
// 代表项目根目录下
body1.setDataHandler(new DataHandler(dataSource1));
// 中文附件名,解决乱码
body1.setFileName(MimeUtility.encodeText(fileName));
mp.addBodyPart(bp);
send(copyTos, body1);
} /**
* 构建body
* @param tos
* @param subject
* @param content
* @return
* @throws MessagingException
*/
private static BodyPart setBodyPart(String[] tos, String subject, String content) throws MessagingException {
mp = new MimeMultipart();
mimeMsg = new MimeMessage(session); //add 解决ssl发送邮件
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", 465);
props.put("mail.smtp.port", 465); session = Session.getDefaultInstance(props, null);
session.setDebug(false); // 设置发信人
mimeMsg.setFrom(new InternetAddress(FROM_ADDR));
// 设置接收人
InternetAddress[] sendTo = new InternetAddress[tos.length];
for (int i = 0; i < tos.length; i++) {
sendTo[i] = new InternetAddress(tos[i]);
}
mimeMsg.setRecipients(Message.RecipientType.TO, sendTo);
// 设置主题
mimeMsg.setSubject(subject); // 设置正文
BodyPart bp = new MimeBodyPart();
bp.setContent(content, "text/html;charset=utf-8");
return bp;
} /**
* body追加部分
* @param copyTos
* @param bp
* @throws MessagingException
*/
private static void send(String[] copyTos, BodyPart bp) throws MessagingException {
mp.addBodyPart(bp);
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
// 发送邮件
Transport transport = session.getTransport(SMTP);
transport.connect(HOST_NAME, FROM_NAME, FROM_PWD);
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
if (copyTos != null && copyTos.length > 0) {
// 设置抄送人
for (int i = 0; i < copyTos.length; i++) {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyTos[i]));
}
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));
}
transport.close();
} //测试
public static void main(String[] args) throws Exception {
String[] tos = {"xxx@xx.com"}; //接收者的邮箱地址
String errorMsg = "123\n223";
ByteArrayInputStream stream = new ByteArrayInputStream(errorMsg.getBytes()); //带附件的邮件
// sendMailAttachment(tos, null, "测试邮件-附件邮件含附件", "Dear ALL 2233:<br><br> 详见附件", stream, "文件.txt", "application/txt");
//普通邮件
sendMail(tos,null,"测试邮件-普通邮件不含附件","邮件内容这是一封测试邮件");
} }
Java邮件发送解决ssl javax.mail实现方式的更多相关文章
- 基于JavaMail的Java邮件发送:复杂邮件发送
参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...
- java邮件发送(含附件)
1. [代码]java邮件发送(含附件)疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:1.邮件发送的配置propertity文件内容如下:(utils.properties文件放在sr ...
- JAVA邮件发送的简单实现
JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注 ...
- javamail发送邮件及错误解决方法javax.mail.AuthenticationFailedException: failed to connect, no password specified?
javamail发送邮件及错误解决方法javax.mail.AuthenticationFailedException: failed to connect, no password specifie ...
- java-基于JavaMail的Java邮件发送
1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送
- 【转】基于JavaMail的Java邮件发送
http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...
- java邮件发送工具
最近在web项目中,客户端注册时需要通过邮箱验证,服务器就需要向客户端发送邮件,我把发送邮件的细节进行了简易的封装: 在maven中需要导入: <!--Email--> <depen ...
- spingboot之Java邮件发送
注意: 该项目的工具类可以直接应用于项目 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- Java 邮件发送
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId&g ...
- java 邮件发送工具类
首先需要下载mail.jar文件,我个人通常是使用maven中心库的那个: <dependency> <groupId>javax.mail</groupId> & ...
随机推荐
- KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化
简介: 2021 年 6 月 23 日,云原生计算基金会(CNCF)宣布通过全球 TOC 投票接纳 KubeDL 成为 CNCF Sandbox 项目.KubeDL 是阿里开源的基于 Kuberne ...
- 基于英特尔® 优化分析包(OAP)的 Spark 性能优化方案
简介: Spark SQL 作为 Spark 用来处理结构化数据的一个基本模块,已经成为多数企业构建大数据应用的重要选择.但是,在大规模连接(Join).聚合(Aggregate)等工作负载下,Sp ...
- IDA动态调试快捷键
1. F2下断点2. F7进入函数,F8单步调试,F9跳到下一个断点,F2下断点,G调到函数地址3. N重名4. g跳到地址和函数名5. u取消把函数汇编变成机器码6. c就是把机器码变成汇编7. F ...
- [Gin] 传统 for 循环中的语义通用化,在 golang 中使用分号 ; 替代 && 流程控制
// gin.go // HandlerFunc defines the handler used by gin middleware as return value. type HandlerFun ...
- WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常
准确来说,这个不算是 WPF 的问题,而是系统等的问题.在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker 类里面抛出 Sys ...
- IEC104 从站/服务端模拟器 调试工具推荐
目录 IEC104 从站/服务端模拟器 调试工具推荐 主要功能 软件截图 IEC104 从站/服务端模拟器 调试工具推荐 下载地址:http://www.redisant.cn/iec104serve ...
- Gradle构建SpringBoot单模块项目
Gradle构建SpringBoot单模块项目 方式Ⅰ:未基于:Gradle Wrapper 方式Ⅱ:(推荐使用)Gradle Wrapper[可以不安装Gradle.统一Gradle的版本]--包括 ...
- 题解:CF1941G Rudolf and Subway
原题链接 简化题意 一个无向连通图中将边分成了不同颜色(保证同种颜色联通),问从 \(b\) 到 \(e\) 最短需要经过几种颜色 思路 考虑因为同种颜色联通,可直接在读入的时候开两个 vector ...
- WEB服务与NGINX(16)-网站logo之favicon.ico文件
目录 1. 网站logo之favicon.ico文件 1.1 favicon.ico文件的作用 1.2 favicon.ico文件带来的问题 1. 网站logo之favicon.ico文件 1.1 f ...
- spring-boot集成Quartz-job存储方式一JDBC
1.项目jar包依赖引入 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...