Skip to main content

02.e-mail初识学习笔记

1 什么是邮件?

不讨论邮件以外的任何定义,从邮件本身来看只干2件事:收信和发信,细点说是找到自己的邮箱收信和注明别人的信箱地址发信。 而电子邮件不过是把现实的地址映射为:<usre>@<domain>的格式,然后照常收发信。所以电子邮件无论多复杂,最终只是要实现“收信”和“发信”

2 什么是邮件的格式?

   from: <username>@<domain>
to: <username>@<domain>
subject: <the email title>

<the email content>
.

以上是邮件的最终的文本传输形式,分别是发件人地址收件、收件人地址、标题、空行、邮件正文和"."。其中空行把邮件又划分为邮件头(空行以上)和邮件正文(空行下),又用"."代表邮件的结束。

3 电子邮件是如何实现收发的?

3.1 邮件的发送

邮件的发送是由smtp(Simple Mail Transfer Protocol)来传输的,首先邮件服务器会跟邮件客户端建立连接并进行登录验证通过后把邮件发送到服务器上,再读取邮件的头的收件地址的域名后,再根据这个域名通过smtp把邮件发送到这域名的MX解析指向IP主机上,如果没有MX记录则用A记录的指向。

3.2 使用telnet连接smtp服务器发送邮件

$ telnet smtp.163.com 25 # 连接smtp服务器
Trying 220.181.12.16...
Connected to smtp.163.com.
Escape character is '^]'.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
$ helo fs # helo 是跟服务器连接后要发送的第一条命令一般格式为 helo <domain>
250 OK
$ auth login # 进入登录
334 dXNlcm5hbWU6
$ d3VjaHVoZW5nQDE2My5jb20= # 用户名bash64
334 UGFzc3dvcmQ6
$ b*********lJSUlI5NA== # 密码base64
235 Authentication successful
$ mail from: <wuchuheng@163.com> # 邮件发送地址
250 Mail OK
$ rcpt to: <tnmrlj@163.com> # 收件地址
250 Mail OK
$ rcpt to: <2831473954@qq.com> # 抄送地址
250 Mail OK
$ data # 进入写邮件内容
354 End data with <CR><LF>.<CR><LF>
$ from: wuchuheng@163.com # 邮件发送地址
$ to: tnmrlj@163.com # 收件地址
$ subject: test title # 邮件标题
$ #空行 进入编辑邮件正文
$ the test content. # 邮件正文
$ # 空行+.代表一封邮件的结束并发送
$ .
250 Mail OK queued as smtp12,EMCowABXD0kOKjVehG6dAA--.53084S2 1580542691
$ quit # 退出
221 Bye
Connection closed by foreign host.
[root@JD ~]#

3.3 邮件的接收

邮件的接收是通过IMAP(Internet Mail Access Protocol) 或POP3()协议进行接收的。