结构图

目录

邮件的知识体系由三部分组成,邮箱服务器,邮件程序,邮件协议。

邮箱服务器一般都是由公司的网络工程师搭建完成,基本上与程序员没有关系。但是笔者还是亲自尝试,使用Apache James搭建一个简单的邮箱服务器。

邮件程序指通过编程来完成发送邮件,接收邮件等相关功能,这里笔者介绍的是Java Mail,这也是本文的重点。当然并不是只有Java才能实现,其他编程语言也会有相应的功能。

Java Mail 的知识体系由以下三个部分组成:

  • 配置文件:配置文件包含一些重要的信息,其中连接邮箱服务器的相关配置是必须的,例如host邮箱服务器的地址,user邮箱账户,password账户密码,protocol邮箱服务器使用的协议,port邮箱服务器使用的端口号(默认为25)。还有一些常用的配置,如字符集,过期时间,是否打印详细的信息等等。
  • 核心对象:
  1. Provider类似于驱动,提供对特定协议的支持,例如Java Mail 支持SMTP,IMAP,POP3,GMail,其他协议类型的邮件无法发送。 要想发送其他邮件类型,需要使用特殊的Provider,需要下载特定的jar包。
  2. Session连接时创建一个会话,用户断开连接后,session对象会相应被销毁。
  3. Transport传输通道,用来发送邮件,可以在客户端与邮箱服务器之间传输邮件数据。
  4. URLName: 类似于URL,它表示邮箱文件的资源定位符,格式为protocol://username:password @ host/ folderName,其中password不是必需的。
  5. Address: 表示一个邮箱账户地址。它有三个属性,其中address表示邮箱账户,personal表示邮件的标题,charset 表示标题的字符集。Address有两种类型,InternetAddress和NewsAddress。InternetAddress主要用来表示普通邮件类型的账户。NewsAddress表示新闻邮件类型的账户。
  6. Message: 表示一封邮件。邮件有种类,信息,操作三个部分。

    Message是一个抽象类,MIMEMessage继承Message表示内容为MIME类型的邮件,如果内容为其他类型,需要实现自定义的类继承Message。

    邮件由Header和Content两部分组成,其中Header包含一些基本的信息,例如发送邮件的时间,邮件标题,邮件接收人等等。Content表示邮件的内容,它可以是字符串,也可以是一个MultiPart复杂类型,MimeMultiPart表示Mime类型的复杂类型。MultiPart可以包含一个或者多个Multipart,BodyPart。而一个BodyPart又可以包含一个或者多个Multipart,Bodypart。两者的关系类似于JSON中的JSONArray与JSONObject,可以互相嵌套。每一个BodyPart又由三部分组成,Attribute,Header,Content。其中Header和Content的含义大体相同。Attribute包含BodyPart的基本信息,例如size表示大小,description表示描述。

    操作有创建邮件,发送邮件,接收邮件,删除邮件,设置标签,监听邮件事件等等。其中发送邮件可以发送带附件的邮件,也可以对邮件的内容进行加密,转码等操作。

  7. Folder: 表示邮件的文件夹。文件夹有属性,状态,文件夹自身操作与文件夹下包含的邮件操作。文件夹有两种状态,关闭和打开,它是某些文件夹操作的前提,例如删除邮件只能在文件夹关闭的状态下才能进行。文件夹属性有名称,权限等信息。文件夹操作有新增,删除,重命名,移动,复制等操作。文件夹中的邮件操作有新增,拷贝,删除,get&set,搜索,标记等
  8. MailEvent表示邮件的事件。邮件的事件类型有六种,ConnectionEvent,表示连接相关的事件;FolderEvent,当创建,删除,重命名邮件文件夹时会触发此事件;MessageChangedEvent,表示邮件内容被改变,或者设置标签时会触发此事件;MesageCountEvent,当邮件数量改变时,会触发此事件,例如新增邮件,删除邮件;StoreEvent,没有理解;TransportEvent,邮件传输完成,或者是传输失败之后会触发此事件。
  • 功能:
  1. 配置文件:介绍配置文件内容各项的含义。

  2. 发送邮件:发送简单类型的邮件,发送内容带有图片,发送内容具有特定格式的邮件,发送带有附件的邮件。

  3. 接收邮件:获取邮件相关的信息,对邮件或邮件文件夹进行相关的操作。

  4. 监听邮件:处理邮件事件,例如当收到新邮件时发送提示消息,传输失败之后重新发送邮件等等。

邮件的功能不止以上四种,笔者随时用到会随时总结。

邮件协议通常指SMTP,IMAP,POP 3等协议,了解这些协议的概念和意义。对于邮件的开发来说,了解这些协议不是必须的。笔者目前并不了解这些协议,之后会补充。

参考资料

API:https://javamail.java.net/nonav/docs/api/

书籍:JavaMail API(O'REILLY),下载地址:http://freepdf-books.com/javamail-api/

Jar包下载地址(Maven):http://mvnrepository.com/artifact/javax.mail/javax.mail-api

最新文章

  1. 几款主流PHP框架的优缺点评比
  2. java集群技术(转)
  3. PP66 EEPPPPMM SSyysstteemm AAddmmiinniissttrraattiioonn GGuuiiddee 16 R1
  4. <html:option获取文本值
  5. event.keyCode|| event.which.的用法
  6. jQuery的on方法和bind绑定多个事件
  7. Firebug中命令行栏(Commandlinie)的使用介绍和总结
  8. SQL Server 系统时间
  9. 如何让tableView展示数据
  10. Android程序捕获未处理异常,处理与第三方方法冲突时的异常传递
  11. des 加密 iOS
  12. Android HttpClient HttpURLConnection相关介绍
  13. Python的优势及应用领域
  14. 51Nod 1058 N的阶乘的长度
  15. asp.net tag
  16. Eclipse 安装使用 M2Eclipse 插件
  17. 关于开发React Native的注意事项
  18. Discuz!论坛基本搭建
  19. MacBook Pro 15寸常见问题及修复
  20. hbase windows安装

热门文章

  1. bugkuCTF-管理员系统(IP伪造)
  2. 在W10系统中配置Java环境变量后,cmd命令提示符找不到java
  3. IntelliJ IDEA 2019年最新版2019.3.1 安装激活教程【最强,可用至2100、2089年】
  4. C# 索引器的理解和使用
  5. JavaScript 13 Ajax技术(未完)
  6. css 基础教程学习
  7. scala-匹配序列和元组
  8. 跳表的java实现,转载自网络,仅供自己学习使用
  9. 牛客CSP-S提高组赛前集训营3 赛后总结
  10. 使用python 写一个 股票涨跌提醒功能