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)


相关推荐

  • Intellij IDEA 实用插件

    Intellij IDEA 实用插件1.前言从2020年JVM生态报告解读可以看出IntellijIDEA目前已经稳坐JavaIDE头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA的优良设计保证了我的生产力,也是我情愿为之付费的软件之一。今天把我自己经常用的一些插件拿出来分享一波。同时欢迎加入[微信圈子]SpringForAll社区交流编程经验。2.IDEA插件分享之前我们来看看其插件体系。IntellijIDEA大部分功能是通过插件集成进来的。默认情况下已经集成了很多插件。你可以…

  • 第七课 实战文件注册机制「建议收藏」

    第七课 实战文件注册机制「建议收藏」                实战文件注册机制【盲人摸象】故名思意就是借助一些我们常用的按钮事件,API断点,去高速有效的锁定此课主要是以回顾和巩固以上六课我们所学的知识,当然这课我奉劝大家还是认真的学习,尤其是以后想靠外挂赚钱的同学,这课学得多自然就会得多不要认为我就是一味的靠我的经验,以下就是一系列调试的技巧 这课主要是观看MOV的赋值,以及寄存器的变化,从而达到激活成功教程这也是以后在激活成功教程带有V…

  • Nginx + Tomcat 搭建负载均衡

    Nginx + Tomcat 搭建负载均衡Nginx + Tomcat 搭建负载均衡

  • 安全帽识别系统-智慧工地的守夜人

    安全帽识别系统-智慧工地的守夜人在企业作业和工地施工过程中,安全永远高于一切。大家都知道,在进入工作现场是必须佩戴安全帽的,传统的检查方法主要靠安检人员一个一个的检查,这种方法耗时费力却无法保证效果。深圳强美推出鹰眸安全帽识别系统之后,这项工作就与人工智能紧密相联,跨入了高科技时代。安全帽识别系统能够实时对未佩戴安全帽的行为发出警告,及时提醒监理人员处理,为作业人员筑起一道人工智能的安全防火墙。鹰眸安全帽识别系统面世之后,在业…

  • 【原创】PEST分析思维的一些基本思考与见解

    【原创】PEST分析思维的一些基本思考与见解数据说·思维季所谓不可能,只是现在的自己不可能,对将来的自己而言那是“可能”的。–稻盛和夫前言我们上篇内容,梳理和分享数据分析入门级思维—描述性分析思维,能让我们了解到数据信息的整体概况…

  • 重定向与转发的区别_nginx重定向和转发的区别

    重定向与转发的区别_nginx重定向和转发的区别重定向和转发的区别: 重定向和转发的区别就是请求服务器几次, 如果请求服务器地址没有变说明这是一次请求请求在自己的服务器里面流转这就是转发这是服务器行为。 如果请求服务器地址变了,说明这是请求了二次,第二次请求由客户端流浪器负责,在多台服务器之间流转这就是客户端行为。 重定向: 1、重定向的速度比较慢,需要跨越服务器 2、重定向是两次不同的请求 3、重定向是执行重定向之后的代码 4、地址栏的地址是会发生变化的 5、重定向不包含项目的根目录 6、重定向是会就是.

    2022年10月31日

发表回复

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

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