`

创建纯文本、HTML格式的邮件

 
阅读更多
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 架构层次图:

JavaMail03

2、JavaMail 的类层次图:

JavaMail04

3、JavaMail 中几个最重要类的类图:

JavaMail01

4、MimeMessage 类的具体类图:

JavaMail02

JavaMail 文档有时间慢慢理解,使用 JavaMail 开发邮件应用程序可以参考解压之后的 JavaMail 开发文档,下面用代码实现创建一个纯文本格式的邮件:

纯文本格式的邮件:

  1. importjava.io.FileOutputStream;
  2. importjava.util.Date;
  3. importjava.util.Properties;
  4. importjavax.mail.Message;
  5. importjavax.mail.Session;
  6. importjavax.mail.internet.InternetAddress;
  7. importjavax.mail.internet.MimeMessage;
  8. /**
  9. *创建纯文本格式的邮件,保存为Outlook的".eml"邮件格式
  10. *@authorhaolloyin
  11. */
  12. publicclassTextMessage{
  13. publicstaticvoidmain(String[]args)throwsException{
  14. Stringfrom="test_hao@sina.cn";
  15. Stringto="test_hao@163.com";
  16. Stringsubject="创建一个纯文本邮件!";
  17. Stringbody="纯文本邮件测试!!!";
  18. //创建该邮件应用程序所需的环境信息以及会话信息
  19. Sessionsession=Session.getDefaultInstance(newProperties());
  20. //根据上面的Session实例创建MimeMessage实例,即一封邮件
  21. MimeMessagemsg=newMimeMessage(session);
  22. //设置发件人地址
  23. msg.setFrom(newInternetAddress(from));
  24. //设置收件人地址
  25. msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
  26. //设置E-mail主题
  27. msg.setSubject(subject);
  28. //设置发送时间
  29. msg.setSentDate(newDate());
  30. //设置E-mail正文部分
  31. msg.setText(body);
  32. //必须保存对该MimeMessage实例的更改
  33. msg.saveChanges();
  34. //将msg对象中内容写入当前文件的textMail.eml文件中
  35. msg.writeTo(newFileOutputStream("textMail.eml"));
  36. }
  37. }

编译运行,得到 textMail.eml 文件,双击自动用 Outlook 打开,如下图:

TextMail

image

单击 Outlook 中的“文件”—> “属性”—> “详细信息”可看到该邮件的邮件头,再点击“邮件来源”可看到该邮件的源文件内容,如下图:

image

注意上面被选择的内容,Content-Transfer-Encoding: base64 说明是被用 BASE64 编码转换过的了,因此邮件的正文部分如下图:

image

因为邮件中的 subject 和 body 都用到了中文,所以字符集编码时 charset=GBK 。

HTML 格式的邮件:

再用同样的方式创建一封 HTML 格式的邮件,对上面的代码稍作修改即可,代码如下:

  1. importjava.io.FileOutputStream;
  2. importjava.util.Date;
  3. importjava.util.Properties;
  4. importjavax.mail.Message;
  5. importjavax.mail.Session;
  6. importjavax.mail.internet.InternetAddress;
  7. importjavax.mail.internet.MimeMessage;
  8. /**
  9. *创建HTML格式的邮件,保存为Outlook的".eml"文件
  10. *@authorhaolloyin
  11. */
  12. publicclassHtmlMessage{
  13. publicstaticvoidmain(String[]args)throwsException{
  14. Stringfrom="test_hao@sina.cn";
  15. Stringto="test_hao@163.com";
  16. Stringsubject="创建一个HTML格式邮件!";
  17. Stringbody="<h4>HTML格式的邮件测试!!!</h4>"+
  18. "<ahref=http://haolloyin.blog.51cto.com/>蚂蚁</a>";
  19. //创建该邮件应用程序所需的环境信息以及会话信息
  20. Sessionsession=Session.getDefaultInstance(newProperties());
  21. //根据上面的Session实例创建MimeMessage实例,即一封邮件
  22. MimeMessagemsg=newMimeMessage(session);
  23. //设置发件人地址
  24. msg.setFrom(newInternetAddress(from));
  25. //设置收件人地址
  26. msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
  27. //设置E-mail主题
  28. msg.setSubject(subject);
  29. //设置发送时间
  30. msg.setSentDate(newDate());
  31. //设置E-mail正文部分
  32. //msg.setText(body);
  33. msg.setContent(body,"text/html;charset=gbk");
  34. //保存对该MimeMessage实例的更改
  35. msg.saveChanges();
  36. //将msg对象中内容写入文件
  37. msg.writeTo(newFileOutputStream("htmlMail.eml"));
  38. }
  39. }

注意上面代码中的 msg.setContent(body, "text/html;charset = gbk"); 语句,双击生成的文件自动用 Outlook 打开,如下图:

image

image

image

我们注意到编码方式变成了 quoted-printable ,它与 BASE64 编码类似,都是将纯粹的二进制数据转换成可以打印的 ASCII 字符,具体的区别和用途请查阅资料。

目前的还不可以给指定的邮箱发送邮件,只是创建一封邮件而已。

小结:

1、了解 MIME 协议以及 MIME 邮件的组织结构对理解上面给出的类图很有帮助;

2、如果邮件的 subject 和 body 都不涉及中文,那么整封邮件都不会被转码,而是用最原始的 7bit 编码格式,可以试一试看一下效果。


分享到:
评论

相关推荐

    javamail 邮件发送支持带有图片的html格式和普通文本格式

    它提供了丰富的功能来处理不同类型的邮件内容,包括纯文本、HTML 格式以及包含图片在内的富媒体邮件。在实际应用中,开发人员常常需要将这些格式混合使用,以便为用户提供更丰富的阅读体验。 #### 技术要点 1. **...

    EmailReplyParserPHP解析纯文本的电子邮件内容

    若要处理更复杂的邮件格式,可能需要结合其他PHP邮件处理库,如PHPMailer或SwiftMailer。 总的来说,EmailReplyParser是PHP开发中处理电子邮件回复的强大工具,它简化了从杂乱的邮件回复中提取关键信息的过程。通过...

    Python-Python实现自动发邮件支持HTML富文本

    这是使用Python发送的HTML邮件。 你可以插入任何HTML元素,如图片、链接等。 &lt;/html&gt; """ msg = MIMEMultipart("alternative") msg["From"] = from_email msg["To"] = to_email msg["Subject"] = subject ``` ...

    邮件发送与接收(包含各种形式的附件,如文本格式,html格式),还有安装与相关类的介绍,带附近的邮件发送是一个非常好的例子,我朝的饿个啊个是个的个个!

    文本格式的附件直接包含纯文本内容,易于阅读且不受邮件客户端的影响。HTML格式的附件则允许创建丰富的格式化文本,包括字体、颜色、链接和图片,但需要支持HTML的邮件客户端才能正确显示。 在Java等编程语言中,...

    JAVA 发送HTML格式并带图片的邮件实例

    HTML邮件通常包含多个部分,比如文本和图片。因此,你需要创建一个`Multipart`对象,它允许你将不同类型的邮件内容组合在一起。`MimeMultipart`是JavaMail API中实现`Multipart`接口的类。 4. **添加文本内容**: ...

    PHP邮件一键发送支持HTML格式

    HTML邮件的发送涉及到`MIME`多部分编码,将邮件内容分为纯文本和HTML两部分,以便邮件客户端能够适当地解析和显示内容。 `need_mail_f.php`可能包含了一些辅助函数,比如处理邮件头、验证邮件地址或者连接SMTP...

    邮件客户端的html格式邮件解析规则系列教程(一)

    【邮件客户端的HTML格式邮件解析规则系列教程(一)】主要关注的是Microsoft Outlook 2007中HTML邮件的解析规则及其对邮件设计者的影响。Outlook 2007弃用了基于Internet Explorer的HTML渲染引擎,转而采用Microsoft...

    邮件客户端的html格式邮件的解析规则教程(三)

    在邮件客户端中,尤其是对于HTML格式的邮件,正确解析和显示背景图像是一项挑战,尤其是在Outlook 2007这样的应用...关注更多关于ISPs和邮件客户端的HTML邮件解析规则,可以帮助我们更好地创建兼容多平台的邮件设计。

    spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码.zip

    本教程将详细讲解如何利用Spring Boot实现四种类型的邮件服务:发送普通文本邮件、HTML邮件、附件邮件以及嵌入图片的邮件。我们将主要依赖Spring Boot的`spring-boot-starter-mail`模块来完成这些操作。 首先,你...

    邮件模板html

    尤其在Web开发领域,创建高质量的HTML邮件模板是至关重要的。 邮件模板HTML的优势在于它可以包含丰富的样式和布局,包括颜色、字体、图像、链接、按钮等元素,使邮件看起来更专业、更有吸引力。然而,由于邮件...

    JavaMail发送邮件(文本、html、附件)

    在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业级应用,通常会使用邮件服务提供商如SendGrid、Mailgun等,它们提供了更稳定、安全且易于管理的邮件发送服务。

    c#开发html格式邮件并添加附件

    mailMessage.Body = "这是HTML邮件内容&lt;/h1&gt;&lt;p&gt;可以包含样式和图像等。&lt;/p&gt;"; ``` 添加附件: `MailMessage`类的`Attachments`属性是一个`AttachmentCollection`,你可以通过调用其`Add`方法添加附件。例如: ```...

    html邮件发送模板

    HTML邮件发送模板是一种用于在电子邮件中呈现精美布局和设计的技术,它结合了HTML和CSS的元素,以提供比纯文本邮件更丰富的用户体验。在站点注册、登录通知或操作通知等场景下,HTML邮件模板能够有效地传达信息并...

    使用PostcardsEmailBuilder创建的免费HTML电子邮件模板

    Postcards Email Builder是一个强大的工具,它允许用户无需深入HTML和CSS代码就能创建高质量的HTML电子邮件模板。这款工具专为非技术背景的用户设计,同时也为开发者提供了便利,让他们能够快速地制作和定制邮件模板...

    Python定制HTML格式电子邮件

    8. **HTML与文本版本兼容**:虽然目标是发送HTML邮件,但为了确保那些不支持HTML的邮件客户端也能阅读,可以同时提供纯文本版本的邮件。这可以通过创建两个`MIMEText`对象,一个为HTML,一个为纯文本,然后将它们...

    Email发送,支持服务器认证,超文本邮件内容

    这是一个HTML邮件。&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;" ``` 3. **发送邮件**:最后,使用SmtpClient的Send方法发送邮件: ```vb smtpServer.Send(mail) ``` 4. **其他高级特性**:除了基本功能,还可以设置抄送、密送、...

    项目中使用到的解析html富文本

    富文本指的是包含格式化元素(如字体、颜色、大小、图像、链接等)的文本,与纯文本相比,它能提供更加丰富的显示效果。本篇文章将深入探讨在项目中使用HTML富文本解析的相关知识点。 一、HTML基础知识 HTML...

    javamail发送html邮件

    在实际应用中,经常需要发送包含 HTML 格式的邮件,因为纯文本格式的邮件可能无法满足美观和内容丰富性的需求。JavaMail 提供了发送 HTML 邮件的功能。 #### 三、JavaMail API 的核心类和接口 JavaMail API 包含多...

Global site tag (gtag.js) - Google Analytics