从一台计算机编写邮件到对方收到邮件。假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com

我们在本地的软件上写好邮件,点击发送,邮件就发送出去了,这些电子邮件被称为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将邮件送到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收信的功能,否则只允许在网页登录。否则我们就不能在自己的程序上登陆

来源:https://www.icode9.com/content-1-487901.html

python电子邮件_Python 电子邮件相关推荐

  1. 自学Python 64 使用Python语言收发电子邮件

    Python 使用Python语言收发电子邮件 文章目录 Python 使用Python语言收发电子邮件 一.开发POP3邮件程序 1.类 2.方法 二.开发SMTP邮件程序   自从互联网诞生那一刻 ...

  2. smtplib python教程_Python smtplib 教程

    Python smtplib 教程展示了如何使用 smtplib 模块在 Python 中发送电子邮件. 要发送电子邮件,我们使用 Python 开发服务器,Mailtrap 在线服务和共享的网络托管 ...

  3. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  4. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  5. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  6. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  7. python中带附件发送电子邮件_python发送带附件邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  8. smtplib python教程_Python使用poplib模块和smtplib模块收发电子邮件的教程

    poplib模块接收邮件python的poplib模块是用来从pop3收取邮件的,也可以说它是处理邮件的第一步. POP3协议并不复杂,它也是采用的一问一答式的方式,你向服务器发送一个命令,服务器必然 ...

  9. python使用正则验证电子邮件_Python使用数学形态学腐蚀运算删除验证码图片中的干扰噪点和线条...

    近期会议:10月30-11月1日 全国高校Python课程高级研修班(苏州) 好消息:"Python小屋"编程比赛正式开始 推荐图书:<Python可以这样学>,ISB ...

最新文章

  1. hpacucli查看HP服务器硬盘状态
  2. 部分网站公开数据的汇总(2)
  3. mysql5.7.19设置_MySQL5.7.19安装配置
  4. JDBC连接池JDBCTemplate课堂笔记
  5. java动态菜单显示实现,java – 为Spring MVC / AOP应用程序实现动态菜单
  6. 当代大学查寝奇葩操作大赏 | 今日最佳
  7. 基于springcloud的开发者实践:hystrix-dashboard熔断仪表盘
  8. 怎么将pom文件mysql驱动修改版本_JDBC-MySql基础操作详解
  9. 找回VisualStudio异常设置中丢失的“用户未处理的(User-unhandled)”列
  10. Perl 连接Oracle 出现OCI missing的问题及解决
  11. 美国女童子军正在学习电脑黑客技术!
  12. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django
  13. Xeogl 基于 WebGL 的 3D 引擎
  14. 190728每日一句 不经一番寒彻骨 怎得梅花扑鼻香,一个人怎样保持激情去奋斗?
  15. 友盟推送:测试模式推送完成,但却收不到推送信息
  16. Linux的oracle账户解锁,如何解锁Oracle数据库中账号
  17. MacBook安装虚拟机Parallels Desktop
  18. 做到这一点,帮你每年多赚10万!
  19. 安卓默认打开指定apk的无障碍权限
  20. 计算机系统平台复习提纲

热门文章

  1. ubuntu创建快捷方式和添加到收藏夹
  2. gradle linux中文乱码,Gradle 构建 Android 应用常见问题解决指南
  3. 总结XSS与CSRF两种跨站攻击
  4. 中职计算机学校名师工作室,用心耕耘——记浙江省中职名师工作室领衔人卜连英...
  5. 第十三届 蓝桥杯 单片机设计与开发项目 省赛
  6. sql where条件添加判断 case when... then..else..end,示例说明
  7. C++ Traits编程技法--从迭代器的设计看参数推导与类型推导
  8. 中考计算机加试及格多少分,中考总分多少 中考各科分数是多少
  9. Cytoskeleton Rho/Rac/Cdc42 激活剂 I
  10. 美发明家脑洞大开 预测十几年后电脑会产生感情