iOS之邮箱协议头
开篇之际,先恶心一下自个儿。从去年12月开始,就嚷嚷着写一篇关于邮件的文章,然后就一直到年后才开笔了。罪过罪过……在吐槽一下,英文文档各种坑,主要是看不懂,几乎一大半时间都是在翻译文档上面了。还是自己不努力,抱歉抱歉。那么这篇文章主要是介绍发送简单邮件和回复简单邮件的邮件格式头设置,接下来会介绍一些发送“附件”相关的邮件格式头设置。
虽然是写邮箱客户端,但由于公司项目时接入Gmail的,所以此篇文章是介绍接入Gmail相关的细节问题。我们都知道邮件服务器之间一直遵循几种协议:STMP、IMAP、POP3。那么作为客户端呢,只需要使用好API貌似就可以开始干活了是吧,恰好,Gmail封装了一套非常好用的API,所以具体的STMP、IMAP、POP3协议就不一一介绍了,这篇文章主要介绍简单邮件头(RFC2822)的注意事项。
RFC2822是规范邮件协议发送头部的格式问题,几乎所有邮件协议头都是相同的,这也就是为啥各大邮件服务器能识别不同邮件服务器发送过来的邮件。接下来就简单介绍协议头的几个属性:
Date: 发送邮件日期,(ex: Sun, 14 Feb 2016 23:42:29 -0800 (PST))
Message-ID: 唯一标识邮件的ID,由三部分组成(唯一表示,'@',主机名称也就是arp的反向转发地址)。需要注意一点的是,在使用Gmai ID的过程中也会有一个identify,与此不同的是此ID是标示邮件的唯一ID,Gmai中的ID仅在Gmai邮件服务器有效。(ex:<56c18165.27d6b60a.c8ada.ffff9eb8SMTPIN_ADDED_MISSING@mx.google.com>)
From: 来此何处,别人发给你的邮件,可以这么理解,格式mailName <mailAddress>。(ex:=?utf-8?q?Uber?= <support@uber.com>)
To: 发给谁,去向何方,和From的格式是一样的,如果存在多个人只需要在二者之间加一个‘, ’作为区别。(ex:=?utf-8?q?Uber?= <support@uber.com>, =?utf-8?q?Uber?= <support@uber.com>)
Subject: 发送的标题。(ex: =?utf-8?q?Welcome_to_Uber!?=)
CC: 抄送,类似于copy,当然别人可以看到这封邮件是抄送给谁的,同样可以回复邮件。这个比较纳闷的就是它和‘To’有多大区别了。
BCC: 密送,当事人知道,别人不知道。
In-Reply-To: 回邮地址,此列表的上一封邮件的Message-ID。
References: 此列表的所有Message-ID。
有如上几个属性,就可以简单的发送一封邮件和简单的回复邮件。那么同样需要注意的问题在于,我们From、To、Subject。针对存在中文的属性,这几个属性就进行了base64编码,需要我们解码活着发送时加密,格式=?UTF-8?B? + base64String + ?=。同样的在我们回复邮件的,同样需要在subject前面添加‘Re: ’。
那么此篇文章就先写到这里,最后面将会贴一小戳邮件格式的代码:
图1.发送邮件基本格式图