电子邮件服务器主要提供以下功能

  1. 接收用户投递的邮件
  2. 将用户投递进来的邮件转发给目标邮件服务器
  3. 接收其他邮件服务器转发来的邮件并把邮件存储到其管理的用户邮件中
  4. 为前来读取邮件的用户提供读取服务

邮件服务器按通讯协议可以划分为两种类型

  • SMTP服务器:用于替用户发送邮件和接收外面发送给本地用户的邮件
  • POP3/IMAP服务器:用于帮助用户读取SMTP服务器接收进来的该用户的邮件

发和收是一对,用的协议是一样的,所以发和收邮件的服务都是smtp服务器的功能

电子邮箱

  • 每个电子邮件服务器之上都可以开设多个电子邮箱,电子邮箱也称之为E-mail地址,它类似现实生活中的通讯地址,用户可通过这个地址接收 别人发来的电子邮件和向别人发送电子邮件。电子邮箱的获得需要在邮件服务器上进行申请,确切的说,电子邮箱其实就是用户在邮件服务器上申请一个账户。邮件服务器把接收到的邮件保存到为某个账户所分配的邮箱空间中,用户通过其申请的的用户名和密码登录到邮件服务器上查收该地址已收到的电子邮件。

邮件客户端软件

  • 邮件客户端软件负责与邮件服务器通讯,主要用于帮助用户将邮件发送给SMTP服务器和从POP3/IMAP邮件服务器读取用户的电子邮件。邮件客户端软件通常集邮件撰写、发送和接收功能于一体。

准备实验环境

  • 提前在sina和sohu上开设一个免费账号
  • 获取smtp和pop3服务器的名称
  • 在Outlook中配置sina账户
  • 使用outlook发送和接收邮件

邮件传输协议

  • SMTP协议
    全称为Simple Mail Transfer Protocol(简单邮件传输协议), 它定义了邮件客户端软件与SMTP服务器之间、以及两台SMTP服务器之间的通讯规则。
  • POP3协议
    全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。
  • IMAP协议
    全称为Internet Message Access Protocal(Internet消息访问协议),它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。

Java Mail

  • 要自己写程序发送和接收邮件,可以直接采用Socket编程连接上远程的邮件服务器,然后按照邮件协议与邮件服务器进行交互,涉及较多细节。另外,要想自己编程创键出复杂的MIME格式的邮件,是一件非常困难和麻烦的事情。
  • JavaMail是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如SMTP、POP3、IMAP。
  • 开发人员使用JavaMail API编写邮件处理软件时,需考虑邮件协议的底层实施细节,只要调用JavaMail开发包中的API类就可以了。
  • JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容相关的API。

JavaMail API按其功能划分通常可分为如下三大类

  • 创建和解析邮件内容的API:Message类
  • 发送邮件的API:Transport类
  • 接收邮件的API:Store类

Session类

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等

邮件内容的组织结构

  • RFC822
  • MIME协议
  • 邮件编码
  • 复合结构分析

邮件中常用的两种编码(勿忘百度)

  1. base64
  2. Quted-printable

解决文件有中文的问题

MimeUtility.encodeText(“java培训.txt”);
msg.setFrom(new InternetAddress(MimeUtility.encodeText(“爱花花”) + “ihuahua521love@sina.com”)); // 发件人显示友好名称,不显示邮箱地址