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);

}

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ccd视觉定位教程_正规CCD视觉定位系统工作原理[通俗易懂]

    ccd视觉定位教程_正规CCD视觉定位系统工作原理[通俗易懂]产品品牌CCD视觉定位系统发货城市-有效期至长期有效最小起订1产品单价面议深圳精科视觉科技有限公司成立于2011年底,是一家在视觉及自动化领域有着多年经验的科技公司,专业从事非标自动化机器视觉整套解决方案。公司集研发、销售、维护为一体,汇聚了一批追求卓越、勇于探索、敢于创新、在行业内具有丰富经验的工程技术人员,组建了一支专业、敬业的市场营销团队。激光打标技术具有以下的特点1、可对绝大多数金属或非金…

    2022年6月16日
    52
  • linux系统安装yarn,centos安装yarn

    linux系统安装yarn,centos安装yarnYarn是一个用于node.js应用程序的高级包管理软件。它是任意一个其他Nodejs包管理器的快速、安全和可靠的替代方案,比npm更好的解决包依赖问题。本篇文章介绍在CentOS,Redhat和Fedora系统上安装Yarn的方法。1、使用NPM安装YarnYarn组件可与NPM一起安装。只需运行以下命令即可全局安装Yarn。另外,没有-g,就是仅为当前项目安装。$sudonpminsta…

    2022年5月26日
    248
  • 牛站_牛客网站

    牛站_牛客网站链接https://www.acwing.com/problem/content/submission/code_detail/1207146/题目给定一张由T条边构成的无向图,点的编号为1~1

    2022年8月3日
    7
  • 进程调度时间片轮转例题_进程调度算法java

    进程调度时间片轮转例题_进程调度算法java一、实验目的(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法二、实验原理(1)建立进程控制块(2)设计两个链队列,分别表示就绪队列和完成队列(3)用户输入进程标识符,进程到达时间,进程所需的时间,申请空间存放进程,PCB信息。(

    2025年7月10日
    4
  • Microsoft.Practices.EnterpriseLibrary连接Oracle

    Microsoft.Practices.EnterpriseLibrary连接OracleMicrosoftEnterpriseLibrary用起来也是挺不错的,对于习惯自己写sql语句的开发者们,这个应该挺好的。下面以连接Oracle为例简单介绍下如何连接数据库。首先下载MicrosoftEnterpriseLibrary5.0:http://www.microsoft.com/en-us/download/details.aspx?id=15104,这是一个安装包

    2022年10月20日
    2
  • linux sigpipe信号,Linux下SIGPIPE信号及其处理「建议收藏」

    linux sigpipe信号,Linux下SIGPIPE信号及其处理「建议收藏」在Linux下写socket的程序的时候,如果尝试send到一个disconnectedsocket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE:structsigactionsa;sa.sa_handler=SIG_IGN;sigaction(S…

    2022年5月29日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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