java 发送邮件添加附件_java发送邮件 发送带附件的邮件详解[通俗易懂]

java 发送邮件添加附件_java发送邮件 发送带附件的邮件详解[通俗易懂]importjava.io.File;importjava.util.Date;importjavax.activation.DataHandler;importjavax.activation.FileDataSource;importjavax.mail.Address;importjavax.mail.BodyPart;importjavax.mail.Message;impo…

大家好,又见面了,我是你们的朋友全栈君。

import java.io.File;

import java.util.Date;

import javax.activation.DataHandler;

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;

/**

* 发送带附件的邮件

*

* 需要导入mail.jar

*/

public class AttachmentMailSender {

public static boolean sendMail(MailSenderInfo mailInfo) {

// 判断是否需要身份认证

MyAuthenticator authenticator = null;

if (mailInfo.isValidate()) {

// 如果需要身份认证,则创建一个密码验证器

authenticator = new MyAuthenticator(mailInfo.getUserName(),

mailInfo.getPassword());

}

// 根据邮件发送的属性和密码验证器构造一个发送邮件的session

Session sendMailSession = Session.getInstance(mailInfo.getProperties(),

authenticator);

try {

// 根据session创建一个邮件消息

Message mailMessage = new MimeMessage(sendMailSession);

// 创建邮件发送者地址

Address from = new InternetAddress(mailInfo.getFromAddress());

// 设置邮件消息的发送者

mailMessage.setFrom(from);

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

Address to = new InternetAddress(mailInfo.getToAddress());

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

// 设置邮件消息的主题

mailMessage.setSubject(mailInfo.getSubject());

// 设置邮件消息发送的时间

mailMessage.setSentDate(new Date());

// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象

Multipart mainPart = new MimeMultipart();

// 创建一个包含HTML内容的MimeBodyPart

BodyPart html = new MimeBodyPart();

// 设置HTML内容

html.setContent(mailInfo.getContent(), “text/html; charset=GBK”);

mainPart.addBodyPart(html);

// 为邮件添加附件

String[] attachFileNames = mailInfo.getAttachFileNames();

if (attachFileNames != null && attachFileNames.length > 0) {

// 存放邮件附件的MimeBodyPart

MimeBodyPart attachment = null;

File file = null;

for (int i = 0; i < attachFileNames.length; i++) {

attachment = new MimeBodyPart();

// 根据附件文件创建文件数据源

file = new File(attachFileNames[i]);

FileDataSource fds = new FileDataSource(file);

attachment.setDataHandler(new DataHandler(fds));

// 为附件设置文件名

attachment.setFileName(MimeUtility.encodeWord(

file.getName(), “GBK”, null));

mainPart.addBodyPart(attachment);

}

}

// 将MiniMultipart对象设置为邮件内容

mailMessage.setContent(mainPart);

// 发送邮件

Transport.send(mailMessage);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

public static void main(String[] args) {

// 创建邮件信息

MailSenderInfo mailInfo = new MailSenderInfo();

mailInfo.setMailServerHost(“smtp.sina.com.cn”);

mailInfo.setMailServerPort(“25”);

mailInfo.setValidate(true);

mailInfo.setUserName(“***”);

mailInfo.setPassword(“***”);

mailInfo.setFromAddress(“[email protected]”);

mailInfo.setToAddress(“[email protected]”);

mailInfo.setSubject(“MyMail测试”);

mailInfo.setContent(“我的邮件测试\n\rMy test mail\n\r”);

String[] fileNames = new String[3];

fileNames[0] = “C:/temp/new.txt”;

fileNames[1] = “C:/temp/test.wav”;

fileNames[2] = “C:/temp/mary_photo.jpg”;

mailInfo.setAttachFileNames(fileNames);

AttachmentMailSender.sendMail(mailInfo);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146644.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • UML图:类图 –详细介绍

    UML图:类图 –详细介绍类图的概念描述类、接口及它们之间关系的图,显示系统中各个类的静态结构类图的元素类面向对象系统组织结构的核心对一组具有相同属性、操作、关系和语义的对象的抽象包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)类的组成名称属性操作名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性在UML中,类属性的语法为属性的可见性

  • PriorityQueue 解析

    PriorityQueue 解析Java1.5版本后就提供了一个具备了小根堆性质的数据结构也就是优先队列PriorityQueue。//PriorityQueue默认是一个小顶堆,然而可以通过传入自定义的Comparator函数来实现大顶堆。实际上是一个堆(不指定Comparator时默认为最小堆)队列既可以根据元素的自然顺序来排序,也可以根据 Comparator来设置排序规则。队列的头是按指定排序方式的最小元素…

  • Android中View绘制流程以及invalidate()等相关方法分析

    Android中View绘制流程以及invalidate()等相关方法分析

    2021年11月29日
  • MySQL运行SQL文件时(全面,改成time):check the manual that corresponds to your MySQL server version for the righ[通俗易懂]

    MySQL运行SQL文件时(全面,改成time):check the manual that corresponds to your MySQL server version for the righ[通俗易懂]参考:Mysql错误:checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntax【加`符号、修改有冲突的字段名】checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntax错…

  • 验证码 verifycode 留存可用

    验证码 verifycode 留存可用验证码verifycode留存可用

  • Maven压缩插件YUI Compressor使用介绍

    Maven压缩插件YUI Compressor使用介绍简介这篇文章主要介绍了Maven压缩插件YUICompressor使用介绍以及相关的经验技巧,文章约18810字,浏览量165,点赞数5,值得参考!使用这个插件主要有两个作用:减少资源文件体积,提高移动端页面加载速度。对关键的前端代码进行一定的代码混淆,保护知识产权。使用说明:使用YUICompressor压缩JS和CSS。需要Maven2.0及以上工程。默认情…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号