本文包括两部分,一、邮件文件的内部结构与API分析 二、编写复杂邮件
一、邮件文件的内部结构与API分析
1.复合邮件的整体结构
整体邮件的MIME消息头(mutlipart/mixed)
邮件正文的MIME消息头(multpart/related)
HTML代码的消息头、HTML代码的消息体(multipart/alternative(纯文本+超文本)+内嵌资源 )
图片代码的消息头、图片代码的消息体
第一个附件文件的MIME消息头
第一个附件文件的MIME消息体
第二个附件文件的MIME消息头
第二个附件文件的MIME消息体
。。。。
2.邮件组织结构相关的API
MimeMessage对象
MIME对象的消息头
MimeMultipart对象
MimeBodyPart对象
MimeMultipart对象中设置MimeMultipart对象( MimeBodyPart对象、 MimeBodyPart对象、 MimeBodyPart对象)
MimeBodyPart对象
说明:
MimeMessage类表示整封邮件
MimeBodyPart类表示邮件的一个MIME消息
MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息
关于邮件组织具体结构的图表析构可参考:JavaMail:带附件的邮件格式解析
二、编写复杂邮件
要求:邮件包含附件,且附件名称和发件人名称友好。具体代码如下:
package info.zoio.javamail;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message.RecipientType;
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 Demo3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Session session = Session.getInstance(new Properties());
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("\"" + MimeUtility.encodeText("十井") + "\" <java_mail_test@126.com>"));
// msg.setReplyTo(new Address[]{new InternetAddress("test@621.com")});//回复时的默认收件人
msg.setRecipient(RecipientType.TO, new InternetAddress("java_mail_test@yeah.net"));
msg.setSubject("复杂邮件测试");
//整体框架
MimeMultipart msgMultipart = new MimeMultipart("mixed");
msg.setContent(msgMultipart);
MimeBodyPart cotent = new MimeBodyPart();
MimeBodyPart attch1 = new MimeBodyPart();
MimeBodyPart attch2 = new MimeBodyPart();
msgMultipart.addBodyPart(cotent);
msgMultipart.addBodyPart(attch1);
msgMultipart.addBodyPart(attch2);
//添加正文内容
MimeMultipart bodyMultipart = new MimeMultipart("related");
cotent.setContent(bodyMultipart);
MimeBodyPart htmlBodyPart = new MimeBodyPart();
bodyMultipart.addBodyPart(htmlBodyPart);
htmlBodyPart.setContent("<span style='color:red'>哈哈<span>", "text/html;charset=gbk");
//添加附件
DataSource attahDs1 = new FileDataSource("H:\\config.txt");
DataHandler attahDh1 = new DataHandler(attahDs1);
attch1.setDataHandler(attahDh1);
attch1.setFileName(MimeUtility.encodeText("attach1哈哈.txt"));
DataSource attahDs2 = new FileDataSource("F:\\Java邮件\\手工发送邮件.png");
DataHandler attahDh2 = new DataHandler(attahDs2);
attch2.setDataHandler(attahDh2);
attch2.setFileName(MimeUtility.encodeText("attach2哈哈.png"));
//生成邮件
msg.saveChanges();
//保存到本地
OutputStream os = new FileOutputStream("F:\\Java邮件\\demo3.eml");
msg.writeTo(os);
os.close();
}
}
具体生成邮件效果可登陆java_mail_test@yean.net邮箱(pwd:h123456)查看。
分享到:
相关推荐
在这个"06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序"教程中,我们将深入学习如何利用JavaMail API创建一个能够发送邮件的Java程序。 首先,要发送邮件,我们需要设置一些基本的配置,例如SMTP...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送、接收和管理。它提供了丰富的 API,使得开发者可以在 Java 应用程序中方便地访问邮件服务器。标题中的 "javamail-1.4.1" 和 "javamail-1.4.2" 提到了两个...
JavaMail API 是一个可选的标准扩展,用于读取、编写和发送电子邮件。它允许开发者创建类似于 Eudora、Pine 或 Microsoft Outlook 的邮件用户代理 (Mail User Agent, MUA),而不是像 Sendmail 或其他邮件传输代理 ...
JavaMail API详解.chm文件可能是一个帮助文档,详细介绍了如何使用JavaMail API进行邮件操作。它可能涵盖了如何设置邮件服务器连接,创建邮件消息,添加附件,处理邮件头信息,以及使用MIME多部分消息等内容。这个...
JavaMail API 是一个广泛使用的Java库,用于处理电子邮件通信。这个API提供了丰富的功能,包括创建、发送、接收邮件,以及管理邮箱。在“FAQ.zip_javamail api_zip”中,我们很可能找到了关于使用JavaMail API的常见...
综上所述,JavaMail API 为 Java 开发人员提供了一个强大的工具集,用于处理电子邮件通信的各种需求。无论是创建简单的邮件发送程序还是构建复杂的企业级邮件管理系统,JavaMail API 都能提供必要的支持。
Java邮件开发是Java编程中的一个重要领域,特别是在企业级应用中,用于发送通知、报告、确认信息等。张孝祥老师的课程“传智播客张孝祥java邮件开发”旨在教授如何利用Java进行邮件的发送和处理。在这个16节的完整...
首先,JavaMail API是一个开放源代码的Java库,它提供了与邮件服务器交互的能力,包括创建、发送和接收邮件。这个API包括了多种协议,如SMTP(Simple Mail Transfer Protocol)用于发送邮件,POP3(Post Office ...
Java邮件开发是Java编程领域中的一个重要知识点,主要涉及如何通过编程方式发送和接收电子邮件。传智播客张孝祥的课程“Java邮件开发”深入浅出地讲解了这个主题,结合提供的源代码,我们可以深入了解JavaMail API的...
JavaMail API 是Java平台上的一个标准扩展库,用于开发能够读写和发送电子邮件的应用程序。这个API的设计目标是实现与邮件服务提供商和具体协议无关的邮件操作,使得开发者可以轻松地在不同邮件系统间进行交互。...
1. **JavaMail API**:JavaMail API是Java平台上的一个开源库,用于处理邮件相关的任务,包括发送、接收邮件以及管理邮件服务器。它提供了对SMTP(Simple Mail Transfer Protocol)、POP3和IMAP(Internet Message ...
JavaMail 是一个强大的开源库,专门用于处理电子邮件的发送和接收。它提供了丰富的API,使得开发者可以在Java应用程序中轻松地实现邮件服务的功能。在“hyl.rar_javamail_jsp_mail”这个压缩包中,我们可以看到与...
使用JavaMail API可以编写出跨平台的邮件处理应用,而且由于Java的跨平台特性,使用JavaMail API开发的邮件应用可以部署在Windows、Linux、Unix、Mac OS等多种操作系统上。 文件中提到的“Evaluation Purposes”和...
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...
JavaMail API 是一个Java编程语言中的库,用于处理电子邮件的创建、发送和接收。这个API提供了与邮件协议无关的抽象层,使得开发人员能够在不直接处理底层协议细节的情况下,实现邮件功能。JavaMail API 主要分为两...
JavaMail API提供了一个统一且灵活的接口来处理邮件。它主要包括以下几个核心类: 1. **javax.mail.Session**:会话类,用于管理客户端与服务器之间的连接。 2. **javax.mail.Message**:邮件类,封装了邮件信息,...
总的来说,JavaMail API 提供了一个灵活且功能丰富的框架,让Java开发者能够轻松地集成电子邮件功能到自己的应用程序中,无论是简单的邮件发送还是复杂的邮件管理,都能通过这个API实现。然而,为了充分利用其功能,...
1. JavaMail API:JavaMail API是Java平台上的标准邮件接口,由Java Community Process (JCP) 定义为JSR 54和JSR 245。它提供了处理邮件服务器交互、创建和发送邮件、管理邮箱等功能。 2. javax.mail 包:JavaMail ...
在Java编程语言中,JavaMail API是一个用于处理电子邮件的强大工具,它允许开发者通过程序来发送、接收和管理邮件。在这个“JAVA100例之实例48”中,我们将深入探讨如何使用JavaMail API来接收邮件。这个实例将涵盖...