900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java发邮件有附件代码_java实现发送一封带有附件的邮件

java发邮件有附件代码_java实现发送一封带有附件的邮件

时间:2023-10-11 07:06:41

相关推荐

java发邮件有附件代码_java实现发送一封带有附件的邮件

java实现发送一封带有附件的邮件

java实现发送一封带有附件的邮件

java实现一封带有附件的邮件

继上一篇javamail发邮件的博客接着写,如何实现发送一封带有附件的邮件

直接上代码

import java.io.File;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

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 MailFileSendTest {

public static void main(String[] args) throws Exception {

File affix1 = new File("d:/ceshi.xlsx");

List tempList = new ArrayList();

tempList.add(affix1);

//发送邮件

String fileName1 = "测试附件" ; //新文件名字

String sendContent = "您好,你的订单统计表已经给您发送,详见附件!";//正文

String mainTitle = "测试附件T-2";//标题

sendFileMail(mainTitle, sendContent, fileName1, tempList, "1********[emailprotected]");

}

/**

* 发送带有附件的邮件

*

* @param mailTitle

* @param sendContent

* @param attachFileList

* @Description:

* @author

* @date 9月25日

*/

public static void sendFileMail(String mailTitle, String sendContent, String fileName, List attachFileList,String tomail) {

Properties prop = new Properties();

prop.put("mail.transport.protocol", "smtp");

prop.put("mail.smtp.host", "");

prop.put("mail.smtp.auth", "true");

final String smtpPort = "465";

prop.setProperty("mail.smtp.port", smtpPort);

prop.setProperty("mail.smtp.socketFactory.class", ".ssl.SSLSocketFactory");

prop.setProperty("mail.smtp.socketFactory.fallback", "false");

prop.setProperty("mail.smtp.socketFactory.port", smtpPort);

Session session = Session.getInstance(prop);

try {

// 发送邮件

send(session, tomail, mailTitle, sendContent, attachFileList);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 发送带附件的邮件

*

* @param session 发件人信息

* @param subject 邮件标题

* @param content 邮件内容

* @param recipients 收件人地址

*/

public static void send(Session session, String recipients, String subject, String content, List attachments) {

MimeMessage message = new MimeMessage(session);

try {

System.getProperties().setProperty("mail.mime.splitlongparameters", "false");

String EmailAccount = "*******@";// 发件人的邮箱

String EmailPassword = "*********************";//客户端授权码***

// 创建多重消息

Multipart multipart = new MimeMultipart();

message.setFrom(new InternetAddress(EmailAccount, "qc测试", "utf-8"));

// 邮件标题

message.setSubject(subject);

// 添加邮件正文

BodyPart contentPart = new MimeBodyPart();

contentPart.setContent(content, "text/html;charset=UTF-8");

multipart.addBodyPart(contentPart);

message.setSentDate(new Date());

// 创建邮件的接收者地址,并设置到邮件消息中

Address to = new InternetAddress(recipients);

// Message.RecipientType.TO属性表示接收者的类型为TO

message.setRecipient(Message.RecipientType.TO, to);

// 添加附件的内容

if (attachments != null) {

for (int i = 0; i < attachments.size(); i++) {

BodyPart attachmentBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource(attachments.get(i));

attachmentBodyPart.setDataHandler(new DataHandler(source));

// MimeUtility.encodeWord可以避免文件名乱码

attachmentBodyPart.setFileName(MimeUtility.encodeText(attachments.get(i).getName()));

multipart.addBodyPart(attachmentBodyPart);

}

}

System.out.println("发件人邮箱:" + EmailAccount);

System.out.println("发件人的密码:" + EmailPassword);

// 发送完整消息

message.setContent(multipart);

Transport transport = session.getTransport();

transport.connect(EmailAccount, EmailPassword);// 敲门开门

transport.sendMessage(message, message.getAllRecipients());// 送到对方手里

} catch (Exception e) {

e.printStackTrace();

}

}

}

效果如下

java实现发送一封带有附件的邮件相关教程

JAVA对象布局之对象头(Object Header)

JAVA对象布局之对象头(Object Header) 由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 。在学习并发编程知识 synchronized 时,我们总是难以理解其实现原理,因为偏向锁、轻

Java 优雅判空的方法

Java 优雅判空的方法 为了避免 NullPointerException 出现,我们经常会进行如下操作。 if (object != null) { object.do();} 那么每次使用一个不确定的对象,都需要进行一次判空。so: 可能你会想,项目中肯定不止你一个人会这样一顿操作,然后按下 Ctrl+Shift

java数据结构和算法——图的深度优先(DFS)遍历

java数据结构和算法——图的深度优先(DFS)遍历 目录 一、图的遍历介绍 二、图的深度优先搜索(Depth First Search) 三、图的深度优先遍历算法步骤 四、图的深度优先遍历示例需求 五、图的深度优先遍历代码示例 所谓图的遍历,即是对结点的访问。一个图有那么

利用keepalived+arptables+ipvsadm实现LVS负载均衡的高可用集群

利用keepalived+arptables+ipvsadm实现LVS负载均衡的高可用集群 什么是LVS负载均衡 在生产环境中往往有很庞大的访问量,这种情况下一台服务器是满足不了的,需要利用调度器来控制多台服务器的访问,并且将负载压力均衡分担。 实验环境 准备四台可以互相ping通

java 插入排序

java 插入排序 java插入排序 ********************* 插入排序 算法描述:将无序数组中的元素按数值大小插入到有序队列,逐渐增大有序队列,直至全部插入完成 空间复杂度: 只需要一个额外辅助空间,o(1) 平均时间复杂度: o(n^2) 算法稳定性: 相同大小元素的

zookeeper实现分布式锁的原理及基于zookeeper的 curator 客户端

zookeeper实现分布式锁的原理及基于zookeeper的 curator 客户端实现分布式锁 Zookeeper实现分布式锁的原理: 1、利用Zookeeper的瞬时有序节点的特性; 2、多线程并发创建瞬时节点时,得到有序的序列; 3、序号最小的线程获得锁; 4、其他的线程则监听自己序号

JavaScript回顾01:函数和对象

JavaScript回顾01:函数和对象 文章目录 4 函数 4.1 定义函数 4.2 变量的作用域 4.3 方法 5 内部对象 5.1 Date 5.2 JSON 5.3 Ajax 6 面向对象编程 6.1 什么是面向对象 6.2 继承 4 函数 方法:对象(属性,方法) 函数:对象外 1.定义方式1 function 函数名(){

python实现Bresenham 算法

python实现Bresenham 算法 Bresenham 算法由 Bresenham 在 1965 年提出,是计算机图形学领域中使用最为广泛的线段光栅化算法。该算法最初是为数字绘图仪设计的,由于它也适用于光栅图形显示器,后来被广泛应用于直线的光栅化与其他一些应用。 为方便讨论,这

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。