首页 > WEB开发 > 后台开发 > Java邮件开发(JavaMail)
2014
09-04

Java邮件开发(JavaMail)

17. Java邮件开发(JavaMail)19

使用邮件发送的场景:

  • 新用户注册时的激活Email
  • 重置或找回密码时的确认Email
  • 会员生日的祝福Email
  • 活动、广告Email

1、基本概念

1)邮件服务器

邮件服务器可以向用户提供邮件服务,【想想Web应用服务器、数据库服务器,都是类似的】它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

根据邮件服务器的功能不同,又分为发送服务器和接收服务器,后面还有SMTP服务器、POP3服务器。

2)电子邮箱
电子邮箱其实就是用户在邮件服务器上申请的一个账户,邮件服务器会为这个账号分配一定的空间,用户可以使用这个账户以及空间发送电子邮件及保存别人发送过来的电子邮件。

3)邮件协议(☆)

邮件协议定义了发送和接收邮件所遵循的通信规则。包括:

  • SMTP协议:Simple Message Transfer Protocol。发送协议。默认端口号25。

SMTP工作在两种情况下:一是电子邮件从客户端传输到服务器,二是从某一个服务器传输到另一个服务器(见第1节图)。SMTP也是个请求/响应协议,请求和响应都是基于ASCII文本,并以符(回车换行)结束。

  • POP3协议:Post Office Protocol。接收协议。默认端口号110。接收协议还有IMAP。

4)电子邮件的发送过程图解

模拟lisi@sina.com与wangwu@sohu.com账户相互发送邮件:

17. Java邮件开发(JavaMail)629

2、实验:通过telnet发送一封邮件

1)动手实验:通过在命令行发送一封邮件,来熟悉SMTP协议的工作过程:

实验准备:

① 两个邮箱:发送和接收(本文图个方便,就准备了一个,模拟给自己发邮件)

邮箱:flyne123@163.com 密码:www.flyne.org

② 对发邮件的邮箱账户名和密码进行Base64编码

账号:Zmx5bmUxMjM= 密码:d3d3LmZseW5lLm9yZw==

③ 确保安装了telnet服务(win7/8默认关闭)

④ 163邮箱的SMTP服务器为:smtp.163.com 25,POP3服务器为pop.163.com 110

实验步骤:

step of send mail using telnet

2)创建邮件详解(步骤10~14)

① RFC822文档:该文档规定了如何编写一份简单邮件(只有文本,如本实验)

17. Java邮件开发(JavaMail)1521

② MIME协议

MIME协议是对RFC822文档的升级和补充,它描述了如何生成一封复杂邮件。通常我们把MIME协议描述的邮件称之为MIME邮件,MIME协议描述的数据称之为MIME消息

对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分割线对多段数据进行分隔。MIME协议常用头字段如下:

  • Content-type(☆):对数据的类型、以及多个数据之间的关系进行描述

i)描述数据类型:大类型/小类型,如text/html、image/jpg

ii)描述数据的关系:如multipart/mixed、multipart/related

  • Content-Disposition:指定邮件阅读处理程序处理数据内容的方式

i)inline:直接处理,如文本

ii)attachment:当作附件处理,其后还可以指定filename属性表示文件名。如:Content-Disposition:attachment;filename=1.jpg

  • Content-ID:用于为“multipart/related”组合消息中的内嵌资源指定一个ID,在HTML格式的正文中可以使用这个ID来引用该内嵌资源。例如:将一个表示内嵌图片的MIME消息的Content-ID头字段设置为:Content-ID:flyne_logo_gif,那么,在HTML正文中就需要使用如下HTML语句来引用该图片资源:<img src=”cid:flyne_logo_gif”>。

下图是一封包含文本和图片的邮件的源文件(*.eml):

17. Java邮件开发(JavaMail)2188

除了发送复杂邮件时需要用到MIME协议,文件上传时表单数据也是通过MIME协议组织的,见《文件上传》一文。


Java邮件开发(JavaMail)》有 1 条评论

  1. 总结的很好 说:

    总结的真好 ,

留下一个回复

你的email不会被公开。