互联网电子邮件如何工
你有没有想过当你按下电子邮件程序中的发送按钮时会发生什么? 可能不会,我想 - 只要它有效。 不过,这正是你应该怀疑的原因。 万一有些东西不起作用,那么知道不起作用是很好的。 通常,这只是解决方案的一半。
当您发送电子邮件SMTP进场时。 SMTP是简单邮件传输协议(RFC 5321:简单邮件传输协议)中定义的简称。 您的邮件客户端 使用这个干净而简单的过程与SMTP服务器 交谈 , 从一个地方到另一个地方获取电子邮件 。
调情
您的电子邮件程序将成为SMTP客户端 ,连接到邮件服务器的 端口 25(通常是SMTP端口 ),并且 - EHLO说。 最后,电脑只是人,重要的是它要表现出礼貌。 实际上,它并不试图礼貌,而是使用稍后添加到SMTP中的HELO命令(SMTP命令通常由四个字符组成)。
两种口味的HELO
EHLO是最近的一个,它使服务器通告所支持的所有附加功能(例如传送状态通知或传送包含安全ASCII字符以外的消息的功能)。
并不是每个服务器都会允许这个问候语,但它需要接受一个普通的HELO,它自然会假定没有附加功能。 不过,这两个hello命令确实需要客户端在** LO之后指定其域。 在实践中,这看起来像这样:
220 mail.domain.net ESMTP服务器
HELO
501 HELO需要域名地址
HELO本地主机
250 mail.domain.net你好本地主机[127.0.0.1],很高兴认识你
(我的输入是斜体 ,服务器输出是黑色的;以5开头的行表示错误 。)
发件人
该协议的其余部分确实值得该属性简单。 如果您想发送电子邮件,则以关键字MAIL FROM:开头。 接下来是发件人的电子邮件地址 ,正如发件人所建议的那样。 不要忘记在地址周围加括号,但是(比如
MAIL FROM:
250 sender@example.com ...发件人确定
收件人
服务器接受发件人地址后,客户可以提供收件人地址。 此行动的命令RCPT TO:再次颇具启发性。 我想发邮件给自己 :
RCPT TO:recipient@example.com
250 support@lifewireguide.com ...收件人确定(将排队)
服务器将排队意味着:它会将邮件保存在本地,并将其与所有其他排队邮件一起以间隔(例如,每30分钟一次)发送。 这种行为取决于配置,服务器也可能立即传送邮件。
我们差不多完成了。 但是,仍然缺少的是重要的部分:实际的信息。
消息
现在“信封”已经完成,电子邮件消息的数据可以按照原样进行。 这个“数据”由电子邮件的正文和标题字段组成 。
启动使服务器接受消息的状态的命令是DATA 。 接下来是电子邮件消息的所有标题字段,然后是正文,这两个字段仅占用一大块文本(或数据)。 要告诉服务器输入已完成,单独一行上的一个点被使用(\ r \ n。\ r \ n)。 所以我发送我的消息:
数据
输入邮件,以“。”结尾。 在一条线上
消息ID:
日期:1997年8月17日星期日18:48:15 +0200
来自:Heinz Tschabitscher
致:Heinz Tschabitscher
主题:Summarize-Proust竞赛
去天鹅的世界!
。
250 SAA19153消息接收供货
是的,这意味着您可以在“收件人:”字段中声明与电子邮件地址完全不同的名称。 例如,您可以使用“ 收件人列表已取消”
结束
您现在可以发送尽可能多的电子邮件,只要您重复MAIL FROM:到的步骤即可。 。 如果你完成了,你可以用QUIT命令退出服务器,这就是我们所做的:
放弃
221再见
我怎样才能做到这一点?
非平凡的解决方案是通过端口25远程登录到您的外发邮件服务器 (您可以在您的电子邮件客户端的帐户设置中找到其地址)。
- 打开命令提示符。
- 输入“telnet <邮件服务器> 25”。
- 使用SMTP与服务器通话。
更简单的方法是使用这个Java小程序 ,它试图模仿SMTP协议并指导您完成对话。