(三)JavaMail发送附件
代码如下:
package cases; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.util.Properties; /**
* @description:
* @author: lv
* @time: 2020/5/25 17:53
*/
public class MailSendUtil { public static void main(String[] args) throws Exception{
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); //// 设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf); //创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("发件人@qq.com", "授权码");
}
}); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true); //2、通过session得到transport对象
Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器
ts.connect("smtp.qq.com", "发件人@qq.com", "授权码"); //4、创建邮件 //创建邮件对象
MimeMessage message = new MimeMessage(session);
// 设置发送时间
message.setSentDate(new Date());
//设置多个收件人
String users = "发件人1@qq.com,发件人2@qq.com";
Address[] internetAddressTo = new InternetAddress().parse(users); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipients(Message.RecipientType.TO, internetAddressTo);
//邮件的标题
message.setSubject("测试报告"); Multipart multipart = new MimeMultipart();
//邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent("测试报告见附件", "text/html;charset=utf-8");
multipart.addBodyPart(contentPart); BodyPart attachmentPart = new MimeBodyPart();
DataSource source = new FileDataSource("./test-output/index.html");
DataHandler attachment = new DataHandler(source);
attachmentPart.setDataHandler(new DataHandler(source));
//避免中文乱码的处理
attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentPart); //邮件的文本内容
message.setContent(multipart);
message.saveChanges(); //5、发送邮件
ts.sendMessage(message, message.getAllRecipients()); ts.close();
}
}
发送多个附件,需要参考上面的代码,大概的思路
Multipart multipart = new MimeMultipart();
//邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(mail.getContent(), "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
//邮件附件
if(attachments != null) {
for(File attachment : attachments) {
BodyPart attachmentPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachment);
attachmentPart.setDataHandler(new DataHandler(source));
//避免中文乱码的处理
attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentPart);
}
}
message.setContent(multipart);
//保存邮件
message.saveChanges();
Transport.send(message);
(三)JavaMail发送附件的更多相关文章
- Javamail 发送附件中文名过长以及乱码问题
最近在弄javamail发送邮件当邮件里含有附件并且附件是中文的时候发送后就会出现乱码!! 通过javax.mail.internet.MimeUtility.encodeText()就可解决这个 ...
- javamail 发送附件
1.属性文件 mail.protocol=smtpmail.host=mail.port=mail.auth=truemail.timeout=25000mail.username=mail.pass ...
- 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进 ...
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
- 使用JavaMail发送带附件的邮件
所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...
- (转)用javamail发送带附件的邮件
本文转载自:http://redleaf.iteye.com/blog/78217 mail.java 代码 package mail; import java.util.* ; import jav ...
- 使用JavaMail发送和接收电子邮件
一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 如今非常多WEB应用在开发时都须要集成邮件发送功能.比如: 1. 给新注冊的用户自己主动发送一封包括其注冊信息的欢迎E-Mail ...
- JavaMail发送和接收邮件API(详解)
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供的JavaMa ...
- JavaMail发送和接收邮件
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...
随机推荐
- 阿里云ECS封25端口导致wordpress无法发送邮件的解决
在有人评论你的文章,wordpress默认会尝试向博主发送邮件,而如果你用的是阿里云ECS,你会发现评论已经成功了,但是由于邮件发送失败会导致用户评论后页面就卡住了,原因就在于阿里云的ECS目前已经全 ...
- Java-第15章图形用户界面设计例题
Example15_1.java JFrame常用方法 import javax.swing.*; import static javax.swing.JFrame.*; public class E ...
- 面向对象案例-学生信息管理系统V1.1
1.学生类 package com.qfedu.student.entity; /** * 学生类实体 * * @author GGGXXC * */ public class Student { p ...
- python的map,reduce函数与pandas的apply,filter函数
1. python自带的apply.filter.map函数.reduce函数,很多情况下可以代替for循环: map(func,list),对list的每个元素分别执行func函数操作,显然func ...
- MVVM 小雏形 knockout
前言 knockout学过的当工具脚本用,就像jquery一样使用,学习成本15分钟,没学过的可学可不学. knockout 是上古神器,话说在远古开天辟地,前端到处是飞禽走兽,一片混乱. 这时候人类 ...
- Rocket - util - Timer
https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A 简单介绍Timer的实现. 1. 基本功能 实现定时器的功能. 2. Ti ...
- 【积累】如何优雅关闭SpringBoot Web服务进程
1.使用ps ef查出进程对应的pid. 2.使用kill -15 pid结束进程. 为什么不使用kill -9 pid,个人理解kill -15 pid更优雅,能在结束进程前执行spring容器清理 ...
- Python——day2
学完今天我保证你自己可以至少写50行代码 明天,还在等你 回顾day1 小练习1: 小练习2: 小练习3: 好了激情的的一天已经过去了正式开始,day2的讲解 Day2 目录: 格式化 ...
- Java实现 LeetCode 825 适龄的朋友(暴力)
825. 适龄的朋友 人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i] 表示第 i 个人的年龄. 当满足以下条件时,A 不能给 B(A.B不为同一人)发送好友请求: age[B ...
- Java实现 LeetCode 912 排序数组(用数组去代替排序O(N))
912. 排序数组 给你一个整数数组 nums,将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0, ...