在 http://java.sun.com/products/javamail/
下载了 JavaMail 1.4.3 版本,如果所用 JDK 是 6.0 则不用再下载 activation 。下载得到的是 javamail-1.4.3.zip 的压缩包,解压得到 mail.jar 包,配置环境变量之后就可以使用了。从解压后的文件夹中有 JavaMail-1.4.pdf 这个 JavaMail 的设计规范文档。虽然是英文,但是稍微看一看我就从中截了 4 张比较有用的图片,觉得有必要了解一下,如下:
1、JavaMail 架构层次图:
2、JavaMail 的类层次图:
3、JavaMail 中几个最重要类的类图:
4、MimeMessage 类的具体类图:
JavaMail 文档有时间慢慢理解,使用 JavaMail 开发邮件应用程序可以参考解压之后的 JavaMail 开发文档,下面用代码实现创建一个纯文本格式的邮件:
纯文本格式的邮件:
- importjava.io.FileOutputStream;
- importjava.util.Date;
- importjava.util.Properties;
- importjavax.mail.Message;
- importjavax.mail.Session;
- importjavax.mail.internet.InternetAddress;
- importjavax.mail.internet.MimeMessage;
- publicclassTextMessage{
- publicstaticvoidmain(String[]args)throwsException{
-
- Stringfrom="test_hao@sina.cn";
- Stringto="test_hao@163.com";
- Stringsubject="创建一个纯文本邮件!";
- Stringbody="纯文本邮件测试!!!";
-
- Sessionsession=Session.getDefaultInstance(newProperties());
-
- MimeMessagemsg=newMimeMessage(session);
-
- msg.setFrom(newInternetAddress(from));
-
- msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
-
- msg.setSubject(subject);
-
- msg.setSentDate(newDate());
-
- msg.setText(body);
-
- msg.saveChanges();
-
- msg.writeTo(newFileOutputStream("textMail.eml"));
- }
- }
编译运行,得到 textMail.eml 文件,双击自动用 Outlook 打开,如下图:
单击 Outlook 中的“文件”—> “属性”—> “详细信息”可看到该邮件的邮件头,再点击“邮件来源”可看到该邮件的源文件内容,如下图:
注意上面被选择的内容,Content-Transfer-Encoding: base64 说明是被用 BASE64 编码转换过的了,因此邮件的正文部分如下图:
因为邮件中的 subject 和 body 都用到了中文,所以字符集编码时 charset=GBK 。
HTML 格式的邮件:
再用同样的方式创建一封 HTML 格式的邮件,对上面的代码稍作修改即可,代码如下:
- importjava.io.FileOutputStream;
- importjava.util.Date;
- importjava.util.Properties;
- importjavax.mail.Message;
- importjavax.mail.Session;
- importjavax.mail.internet.InternetAddress;
- importjavax.mail.internet.MimeMessage;
- publicclassHtmlMessage{
- publicstaticvoidmain(String[]args)throwsException{
- Stringfrom="test_hao@sina.cn";
- Stringto="test_hao@163.com";
- Stringsubject="创建一个HTML格式邮件!";
-
Stringbody="<h4>HTML格式的邮件测试!!!</h4>"+
-
"<ahref=http://haolloyin.blog.51cto.com/>蚂蚁</a>";
-
- Sessionsession=Session.getDefaultInstance(newProperties());
-
- MimeMessagemsg=newMimeMessage(session);
-
- msg.setFrom(newInternetAddress(from));
-
- msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
-
- msg.setSubject(subject);
-
- msg.setSentDate(newDate());
-
- msg.setContent(body,"text/html;charset=gbk");
-
- msg.saveChanges();
-
- msg.writeTo(newFileOutputStream("htmlMail.eml"));
- }
- }
注意上面代码中的 msg.setContent(body, "text/html;charset = gbk"); 语句,双击生成的文件自动用 Outlook 打开,如下图:
我们注意到编码方式变成了 quoted-printable ,它与 BASE64 编码类似,都是将纯粹的二进制数据转换成可以打印的 ASCII 字符,具体的区别和用途请查阅资料。
目前的还不可以给指定的邮箱发送邮件,只是创建一封邮件而已。
小结:
1、了解 MIME 协议以及 MIME 邮件的组织结构对理解上面给出的类图很有帮助;
2、如果邮件的 subject 和 body 都不涉及中文,那么整封邮件都不会被转码,而是用最原始的 7bit 编码格式,可以试一试看一下效果。
分享到:
相关推荐
它提供了丰富的功能来处理不同类型的邮件内容,包括纯文本、HTML 格式以及包含图片在内的富媒体邮件。在实际应用中,开发人员常常需要将这些格式混合使用,以便为用户提供更丰富的阅读体验。 #### 技术要点 1. **...
若要处理更复杂的邮件格式,可能需要结合其他PHP邮件处理库,如PHPMailer或SwiftMailer。 总的来说,EmailReplyParser是PHP开发中处理电子邮件回复的强大工具,它简化了从杂乱的邮件回复中提取关键信息的过程。通过...
这是使用Python发送的HTML邮件。 你可以插入任何HTML元素,如图片、链接等。 </html> """ msg = MIMEMultipart("alternative") msg["From"] = from_email msg["To"] = to_email msg["Subject"] = subject ``` ...
文本格式的附件直接包含纯文本内容,易于阅读且不受邮件客户端的影响。HTML格式的附件则允许创建丰富的格式化文本,包括字体、颜色、链接和图片,但需要支持HTML的邮件客户端才能正确显示。 在Java等编程语言中,...
HTML邮件通常包含多个部分,比如文本和图片。因此,你需要创建一个`Multipart`对象,它允许你将不同类型的邮件内容组合在一起。`MimeMultipart`是JavaMail API中实现`Multipart`接口的类。 4. **添加文本内容**: ...
HTML邮件的发送涉及到`MIME`多部分编码,将邮件内容分为纯文本和HTML两部分,以便邮件客户端能够适当地解析和显示内容。 `need_mail_f.php`可能包含了一些辅助函数,比如处理邮件头、验证邮件地址或者连接SMTP...
【邮件客户端的HTML格式邮件解析规则系列教程(一)】主要关注的是Microsoft Outlook 2007中HTML邮件的解析规则及其对邮件设计者的影响。Outlook 2007弃用了基于Internet Explorer的HTML渲染引擎,转而采用Microsoft...
在邮件客户端中,尤其是对于HTML格式的邮件,正确解析和显示背景图像是一项挑战,尤其是在Outlook 2007这样的应用...关注更多关于ISPs和邮件客户端的HTML邮件解析规则,可以帮助我们更好地创建兼容多平台的邮件设计。
本教程将详细讲解如何利用Spring Boot实现四种类型的邮件服务:发送普通文本邮件、HTML邮件、附件邮件以及嵌入图片的邮件。我们将主要依赖Spring Boot的`spring-boot-starter-mail`模块来完成这些操作。 首先,你...
尤其在Web开发领域,创建高质量的HTML邮件模板是至关重要的。 邮件模板HTML的优势在于它可以包含丰富的样式和布局,包括颜色、字体、图像、链接、按钮等元素,使邮件看起来更专业、更有吸引力。然而,由于邮件...
在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业级应用,通常会使用邮件服务提供商如SendGrid、Mailgun等,它们提供了更稳定、安全且易于管理的邮件发送服务。
mailMessage.Body = "这是HTML邮件内容</h1><p>可以包含样式和图像等。</p>"; ``` 添加附件: `MailMessage`类的`Attachments`属性是一个`AttachmentCollection`,你可以通过调用其`Add`方法添加附件。例如: ```...
HTML邮件发送模板是一种用于在电子邮件中呈现精美布局和设计的技术,它结合了HTML和CSS的元素,以提供比纯文本邮件更丰富的用户体验。在站点注册、登录通知或操作通知等场景下,HTML邮件模板能够有效地传达信息并...
Postcards Email Builder是一个强大的工具,它允许用户无需深入HTML和CSS代码就能创建高质量的HTML电子邮件模板。这款工具专为非技术背景的用户设计,同时也为开发者提供了便利,让他们能够快速地制作和定制邮件模板...
8. **HTML与文本版本兼容**:虽然目标是发送HTML邮件,但为了确保那些不支持HTML的邮件客户端也能阅读,可以同时提供纯文本版本的邮件。这可以通过创建两个`MIMEText`对象,一个为HTML,一个为纯文本,然后将它们...
这是一个HTML邮件。</h1></body></html>" ``` 3. **发送邮件**:最后,使用SmtpClient的Send方法发送邮件: ```vb smtpServer.Send(mail) ``` 4. **其他高级特性**:除了基本功能,还可以设置抄送、密送、...
富文本指的是包含格式化元素(如字体、颜色、大小、图像、链接等)的文本,与纯文本相比,它能提供更加丰富的显示效果。本篇文章将深入探讨在项目中使用HTML富文本解析的相关知识点。 一、HTML基础知识 HTML...
在实际应用中,经常需要发送包含 HTML 格式的邮件,因为纯文本格式的邮件可能无法满足美观和内容丰富性的需求。JavaMail 提供了发送 HTML 邮件的功能。 #### 三、JavaMail API 的核心类和接口 JavaMail API 包含多...