从一台计算机编写邮件到对方收到邮件. 假设我们自己的电子邮件地址是 [email protected], 对方的电子邮件地址是 [email protected]
我们在本地的软件上写好邮件, 点击发送, 邮件就发送出去了, 这些电子邮件被称为 MUA(mail user agent) 邮件用户代理
邮件从本地被发送出去后, 并不会被直接送到用户的电脑上, 而是被发送到 MTA:Mail Transfer Agent 浏览器传输代理, 就是那些 Email 服务提供商, 比如网易, 新浪等等, 由于我们自己的电子邮件是 163.com, 所以邮件回被最先送到网易提供的 MTA, 再由网易的 MTA 发送到对方的 MTA, 即新浪的 MTA, 这中间可能还会经过其他服务商的 MTA
当邮件被送到对方邮箱的服务提供商的 MTA, 因此新浪的 MTA 会把邮件投递到邮件的最终目的地: MDA :Mail Delivery Agent 邮件投递代理. Email 到达 MDA 后, 就静静地躺在新浪的某个服务器上, 存放在某个文件或特殊的数据库里, 我们将这个长期保存邮件的地方称之为电子邮箱.
Email 不会直接到达对方的电脑, 因为对方电脑不一定开机, 开机也不一定联网. 对方要取到邮件, 必须通过 MUA 从 MDA 上把邮件取到自己的电脑上.
所以, 一封电子邮件的旅程就是:
发件人 -> MUA -> MTA -> MTA -> 若干个 MTA -> MDA <- MUA <- 收件人
所以要编写程序来发送和接受邮件, 最基本的两件事
编写 MUA 将邮件送到 MTA, 编写 MUA 从 MDA 上取邮件
协议
发邮件时, MUA 和 MTA 使用的协议就是 SMTP:Simple Mail Transfer Protocol, 后面的 MTA 到另一个 MTA 也是用 SMTP 协议.
收邮件时, MUA 和 MDA 使用的协议有两种: POP:Post Office Protocol, 目前版本是 3, 俗称 POP3;IMAP:Internet Message Access Protocol, 目前版本是 4, 优点是不但能取邮件, 还可以直接操作 MDA 上存储的邮件, 比如从收件箱移到垃圾箱, 等等.
邮件客户端软件在发邮件时, 会让你先配置 SMTP 服务器, 也就是你要发到哪个 MTA 上. 假设你正在使用 163 的邮箱, 你就不能直接发到新浪的 MTA 上, 因为它只服务新浪的用户, 所以, 你得填 163 提供的 SMTP 服务器地址: smtp.163.com, 为了证明你是 163 的用户, SMTP 服务器还要求你填写邮箱地址和邮箱口令, 这样, MUA 才能正常地把 Email 通过 SMTP 协议发送到 MTA.
类似的, 从 MDA 收邮件时, MDA 服务器也要求验证你的邮箱口令, 确保不会有人冒充你收取你的邮件, 所以, Outlook 之类的邮件客户端会要求你填写 POP3 或 IMAP 服务器地址, 邮箱地址和口令, 这样, MUA 才能顺利地通过 POP 或 IMAP 协议从 MDA 取到邮件.
最后特别注意, 目前大多数邮件服务商都需要手动打开 SMTP 发信和 POP 收信的功能, 否则只允许在网页登录. 否则我们就不能在自己的程序上登陆
来源: http://www.bubuko.com/infodetail-3227223.html