程序员,你真的懂得收发电子邮件吗?

前言

在几年以前,相信不少朋友都听说过,马云同志创办阿里巴巴的时候,还不会发邮件。也不知道在阿里巴巴上市之后,他学会收发邮件了没有!呵呵。我是曾经从内心里“瞧不起”过,至少认为在这一点上我比他强很多。后来我才发现,我未必懂得收发邮件。除了我,还有很多的码农也根本不懂得收发邮件,更不懂得Email里面的工作原理。借此,向大家介绍一下和Email相关的技术。

老实说,我在七八年前就有了自己的雅虎邮箱,一直断断续续有用过。直到后来参加工作后,由于经常需要邮件沟通,我才发现,原来电子邮件是这样用的。在我的习惯思维里,一直以为邮箱是必须在提供商的网站上才能登录,然后必须在对应的网页里收发、查看、删除邮件(比如我注册了雅虎邮箱,必须在雅虎网站去登录,然后才能进去操作)。后来有同事推荐了FoxMail,在配置过程中,我才知道了什么是SMTP/POP3协议,后来才发现,原来office中的Outlook,也是一款优秀的邮件客户端。或许有很多朋友和我一样,也是这么天真的认为的。聊点题外话,其实一般的大公司都非常注重“邮件”的,这包含你日常工作中的沟通,工作安排,工作记录等。每天及时收发邮件,也是一种良好的工作习惯。一般公司都有自己的企业邮箱和邮件客户端。当然,小公司好像不太提倡这个,面对面沟通就好了,一般的根本没有这个“工作习惯”。所以,很多人根本没去了解过。包括我们很多开发人员,IT人员,都还不太了解其流程及工作原理。

 

浅析电子邮件的原理

在配置Outlook或者foxMail来收发邮件时,肯定会遇到SMTP协议和POP3协议的配置选项。那这两个协议分别是啥意思呢?网上都有翻译,我不会复制粘贴了。

首先,我会介绍一些常识,然后结合通俗的例子,再结合图文的方式来讲讲电子邮局其中的流程及工作原理。随后,我将会用windows 命令行的方式,登录邮件服务器,用命令行的方式手工发送/接受一封电子邮件。相信这样子,你将会透彻的理解其中的工作原理。

 

电子邮件的一些基本常识:

1.邮件服务器

2.电子邮箱

3.邮件客户端软件

4.邮件传输协议

5.电子邮件的传输过程

首先要明白这些“是懂非懂”的概念,才能更好的理解。

在Internet上要想提供电子邮件的功能,必须要有专门的电子邮件服务器。国内比较有名的就是“四大门户”的邮箱,国外的包括Gmail、Yahoo等。这些都是面向公众的,而且大部分免费提供的。大多数的企业,也都具有自己的企业邮件服务器,提供内部使用,或者日常工作中对外使用。

电子邮件服务器的主要功能:

1)接受用户投递过来的邮件  

2)将用户投递过来的邮件转发给目标邮件服务器  

3)接受其他邮件服务器转发过来的点邮件,并存入到为其管理者所分配的空间中  

4)为前来查收/读取邮件的用户提供服务(当然还包含删除。移动等等操作)

 

如图所示:

1.用户Dylan写好一封邮件,交给了Sina的邮件服务器。完成第一步操作,这使用的就是SMTP协议。用户提交,服务器接受,使用的都是SMTP协议。

2.Sina的邮件服务器收到Dylan的邮件后,根据地址信息,又转发给了QQ的邮件服务器,这两台邮件服务器的收发,使用的都是SMTP协议。

3.有人用QQ邮箱,发送了一封Email给Dylan。所以,QQ的邮件服务器,将邮件发送给Sina的邮件服务器。这两台服务器的收发,使用的都是SMTP协议。

4.第四部比较特殊。是用户Dylan先主动请求Sina的邮件服务器,要求取自己的邮件。服务器知道后,再将该用户Dylan所管理的存储空间中的邮件,返回出去给Dylan。请一定记住,是用户先请求,而不是服务器先响应。这个过程中使用的POP3协议。

网上有些人解释,说SMTP协议就是负责发邮件,POP3协议就是负责收邮件。其实这是不太正确的。多台邮件服务器之间通信,收/发其实都是使用的SMTP协议。

而用户必须主动请求邮件服务器,才能获取到属于用户自己的邮件信息。这个过程中,才使用的是POP3。

其实可以把Internet上的“电子邮件服务器”,当作是一种“电子邮局”,或者直接理解为现实生活中的邮局。

1)用户递交包裹给深圳的邮局,深圳的邮局接受到包裹,再把包裹转发给了武汉的邮局。这其实易经完成了一次邮寄过程,使用的都是SMTP协议。

2)而邮局通常不会主动送货给用户的,也不主动通知你(除了最近几年流行的EMS外)。所以,用户只能主动跑到邮局去,询问邮局的工作人员。

    如果邮局的人发现有属于该用户的包裹,会将包裹交给该用户。这个过程就使用的是POP3协议。

请牢记,邮局不会像快递那样主动送货的,必须是用户主动去邮局询问并取包裹。所谓协议,其实可以理解为一种规范,一种特定的“通话语言”。

 

前面说了这么通俗的例子,相信你已经了解了大致的流程,更重要的是,明白了SMTP/POP3这两种协议。(当然,还有其他的协议,这里不做过多介绍)

友情提示:本文不打算讲解如何配置一台邮件服务器,因为这是网络管理员/系统管理员应该掌握的内容。市面上的邮件服务器软件繁多,在不同的服务器系统上也有多种实现。微软的Exchange Server , Apache James 这些都是比较流行的

电子邮件的传输过程,详细信息如图:

图上已经标明得很清楚了,相信经过前面的介绍。大家都能够理解整个交互过程了。

 

下面,我讲用windows命令行的方式,来演示发送和接收/查看电子邮件

首先,登录我的sina邮箱,准备发送一封邮件到我的QQ邮箱里面去。

运行“cmd”,打开Commond控制台。(提醒大家一下,这不是DOS。我经常发现某些人把其称为DOS,觉得很可笑。还有些培训讲师说这是DOS,误人子弟)

使用telnet命令,输入 telnet smtp.sina.com 25   回车

注释:sina提供的SMTP服务器地址是 smtp.sina.com ,使用的端口号是SMTP协议默认端口号 25 (Gmail好像用的是465和587)

提示:部分用户使用的windows 7的操作系统,可能会提示telnet命令不可用。请在控制面板,”打开/关闭功能“中安装telnet客户端,具体不解释。如果有些朋友还没有用过telnet,那我也只能先吐血了。天朝程序员水平参差不齐,作为一个windows平台上的开发人员,大部分的连个基本的Dos命令都不会。

有图有真相,我在每行命令和输入里,都加了详细的注释:

 

发送完成后,开始准备接受并查看邮件了

同理,telnet 到POP3服务器去

telnet pop.qq.com 110      腾讯的POP3服务器地址是pop.qq.com   使用的端口号也是默认的 110 (报警啊!)

有图有真相:

 

 

好了,朋友们不妨试着用命令行的方式,去体验电子邮件的过程,这能够帮助你理解其中的原理。时间不早了,码奴也要准备休息了。

改天将会向大家详细讲解,在.NET平台中发送邮件的几种情况和实现方式(包括:群发的命中问题、垃圾箱的问题、乱码问题、html邮件、文本邮件、选.NET自带 Or 使用邮件群发组件? 等等)。

本文出自blog.csdn.net/dinglang_2009,转载请注明出处

时间: 2024-09-12 00:42:24

程序员,你真的懂得收发电子邮件吗?的相关文章

程序员,你真的懂得收发电子邮件吗?(转)

  http://www.cnblogs.com/rootq/articles/1320266.html   前言 在几年以前,相信不少朋友都听说过,马云同志创办阿里巴巴的时候,还不会发邮件.也不知道在阿里巴巴上市之后,他学会收发邮件了没有!呵呵.我是曾经从内心里"瞧不起"过,至少认为在这一点上我比他强很多.后来我才发现,我未必懂得收发邮件.除了我,还有很多的码农也根本不懂得收发邮件,更不懂得Email里面的工作原理.借此,向大家介绍一下和Email相关的技术. 老实说,我在七八年前就

想要成为真正优秀的程序员是不是真的很难?

很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程--睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程--我认为这是一种矫枉过正的方法.沿着这条路走,只会让你精疲力尽,犹如夸父逐日一般,死在半道上. 我觉得问题的关键是要想明白你为什么要编程.坦率地说,我编程是因为我喜欢别人用我的程序,这也是我之所以在读书的时候成绩不怎么优秀的原因(我并 不热衷于参加编程竞赛以及类似事情).因此,我也不喜欢参与纯研究的项目--只在论文上讨论各种点子,而不付诸于行动不去写代码(除非恰巧碰到的是研究

程序员你真的只是程序员吗?

进来了吧~你是不是感觉标题有点矛盾啊,是啊,程序员当然就只是程序员而已嘛,还会有其他什么吗? No,No,No,如果你以前是如此认为的,那看完这篇文章后,请从此打消这个念头,因为你要改变成一个不一样的程序员(怎么还是程序员?) 虽然我工作经验也就6年左右,但经历了很多,也自己创业过,也是从一个初级程序员走起,因为看的比较多了,某些东西也普遍存在着很多程序员身上,希望自己的经验能帮助你们. 当刚踏入程序员这条路的时候,有幸为一家公司开发一个大型的电子商务网站,因为这篇领域当时还算刚刚起步,自己的编

程序员编程生涯中常会犯的7个错误

时间久了,我发现很多程序员总是犯着相同的错误,前仆后继,却毫不自知. 下面就是程序员在他们的软件开发生涯中最常犯的7个错误. ▼没有明确的目标 心中没有终点目标,那就只会随波逐流. 如果你想在软件开发的职业生涯上获得成功,那么你需要有一个明确的目标. 仅仅只是对遥远的未来有一个模糊的想法是不够的. 相反,你应该有坚实的目标--在某个时间段内的首要目的--明确定义的目标. 我认识许多程序员和所谓的专业人士庸庸碌碌地在同一个岗位上干了几十年,是的,你没听错,就是几十年! 这是一场悲剧,但如果没有目标

如何优化程序员的内部培训

1.前言 本文的主旨是列内部培训的提纲,特别对培训他人和写作技巧写得细一些,让大家明白很多东西可以培训和怎么传播知识. 虽然题为培训,但我还是想说一句:程序员其实不需要培训,只需要指点.原因有三: 程序员的工作都必须去实践,几乎没有纯理论的领域. 由于互联网的开放性,程序员能找到大量的资源自学. 随着实践深入,会自然地遇到一些问题.解决这些问题除了靠智力外,大部分只需要知道答案的大致方位就能用时间来消灭掉. 大牛之所以能成为大牛,就是知道了很多答案存在的地方以及发现这些地方的方法.优秀的程序员培

作为一个程序员我最大的遗憾

20多年前我处在了人生的一个十字路口.随着我们用5年时间为出版社(他们希望进入新兴的互联网空间)打造的Deltagraph的终结,我的第二家公司逐渐走向没落.那时我已经有了13年作为程序员的经验,并且有大概9年运营一家公司的工作经验(在同一时间). 我不想再兼任两职.我的第一家公司1985年-1987年不仅创建了新的电子表格程序,而且我们还自己发布了出去.我带领公司,除了搞定所有的媒体 公关,管理投资人,做了所有常见的业务内容,而且还是三个程序员中的一个,并担任了UI设计师.在87年年初发布了产

能让程序员心花怒放的七种礼物

一般偏感性的人都容易用小礼物哄的开心,比如从路边摘一朵送给一个小姑娘,她会开心好几天.但对一些偏理性的人,就很难用一个简单的礼物打动他了. 以开发软件为职业的程序员是偏理性的人群的代表,不是一般的难伺候.你可以说他们木纳.死脑筋.不懂人情世故.很难打动他们.下面这个笑话很形象的描绘了 他们: 一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问到, "你是从哪搞到的这么漂亮的车的?" 骑车的那个程序员说, "我刚从那边过来,有一个漂亮的姑娘骑着这个车过来,并停在

如何才能成为一名真正的Web程序员

web|程序|程序员|程序员 程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我想谈的是Web程序员,我感觉目前的情况是这样,一般来说,做Unix的看不起做Windows的,做C++的看不起搞VB或是Delphi(而这两者又有些相互瞧不起)的,好像搞Web的是最惨的,处于食物链的底端.当然,这种情况到了2001年又有点变化,那就是懂Java的牛的不得了,一说起XXX懂Java.Jsp,大家就不禁有些敬仰. 我觉得这种情况很不正常,当然

程序员该如何规划自己的人生

 其实大大小小的文章讨论程序员的人生规划不计其数.本人还是坚持谈谈个人对于程序员日后规划的看法,也是本人做事的一种风格跟对人生的态度吧.希望能给大家有点帮助. 首先我们庆幸的是我们是软件行业的一员,我们作为程序员从最基础的"农民工"开始的,从反反复复的代码中成长起来.我们要为我们的职业感到骄傲才对,他赋予了我们善于动脑的习惯,程序员每天要应对的问题多种多样,我们要快速的思考,不知不觉我们锻炼出了思考的习惯.[当思考成为习惯,成功将随之而至] 思考是前进的本质,我们在当初能进入程序员行业