一、电子邮件的历史

1.起源:

1969 Lenoard K. 教授发给同事的“LO”

1971 美国国防部自主的阿帕网(Arpanet)的通讯机制

通讯地址里用@

1987年中国的第一份电子邮件

“Across the Great Wall we can reach every corner in the world"

2.管理程序

Euroda使邮件普及,Netscape,outlook,formail,后来居上;Hotmail使用浏览器发送邮件

3.​参考资料:https://docs.python.org/3/library/email.mime.html

4.邮件工作流程

MUA(MailUserAgent)邮件用户代理

MTA(MailTransferAgent)邮件传输代理

MDA(MailDeliveryAgent)邮件投递代理

laoshi@qq.com, 老师,北京海淀

xuesheng@sina.com, 学生,上海静安区

​流程:

(1)MUA-MTA ,邮件已经在服务器上了

(2)qq MTA-.........-sina MTA,邮件已经在新浪的服务器上

(3)sina MTA-sina MDA,此时邮件已经在你的邮箱上了

(4)sina MDA - MUA (Foxmail/Outlook),邮件下载到本地电脑

​编写程序的过程:

(1)​发送:MUA-MTA with SMTP(SimpleMailTransferProtocal)包含MTA-MTA

(2)接受​:MDA-MUA with POP3 and IMAP:PostOfficeProtocal v3 and InternetMessageAcessProtocal v4

(3)准备工作:注册邮箱(以qq邮箱为例),第三方邮箱需要设置,以qq邮箱为例​:进入设置中心,取得授权码

二、敲代码

1.SMTP协议负责发送邮件

(1)使用email模块构建邮件

(2)使用smtplib模块发送邮件

#导入相应的包import smtplibfrom email.mime.text import MIMEText#MIMEText三个主要参数:1.邮件内容;2.MIME子类型,在此案例中我们用plain表示text类型;3.邮件编码格式msg = MIMEText("hello ,I am ruigege","plain","utf-8")#发送email地址,此处地址直接使用我的qq邮箱,密码一般许哟啊临时输入,此处偷懒from_addr = "1215217867@qq.con"#此处密码是经过申请设置之后的授权码,不是自己的qq号码密码,相当于github中的privateTokenfrom_pwd = ""#收件人信息#此处使用qq邮箱,我给自己发送吧,就不打扰别人了to_addr = "1215217867@qq.com"#输入SMTP服务器地址#此处根据不同的邮件服务商有不同的值#现在基本任何一家邮件服务商,如果采用第三方收发邮件,都需要开启授权选项#腾讯qq邮箱的smtp地址是smtp.qq.comsmtp_srv = "smtp.qq.com"try:    #两个参数:第一个是服务器地址,但一定是bytes格式,所以需要编码;第二个参数是服务器的接受访问端口    srv = smtplib.SMTP_SSL(smtp_srv.encode(),465)#SMTP协议默认端口25    #登录邮箱发送    srv.login(from_addr,from_pwd)    #发送邮件:三个参数1.发送地址;2.接受地址,必须是List形式;3.发送内容,作为字符串进行发送    srv.sendmail(from_addr,[to_addr],msg.as_string())    srv.quit()except Exception as w:    print(w)

2.POP3协议用于接受邮件

五、源码

D55_1_MailProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D55_1_MailProgramme.py

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载55-Mail编程的更多相关文章

  1. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...

  2. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  3. Java进阶之网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  4. Java中的网络编程

    ​ Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端 ...

  5. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  6. 浅谈Java 8的函数式编程

    函数式编程语言是什么? 函数式编程语言的核心是它以处理数据的方式处理代码.这意味着函数应该是第一等级(First-class)的值,并且能够被赋值给变量,传递给函数等等.(转载自http://xz.p ...

  7. paip.提升性能--多核cpu中的java/.net/php/c++编程

    paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http ...

  8. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  9. 读懂Java中的Socket编程(转)

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  10. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

随机推荐

  1. python中bitmap的参数

    Tkinter Bitmaps: 你会使用这个属性显示一个位图.有以下类型的可用位图. 你会使用这个属性显示一个位图.有以下类型的可用位图.: "error" "gray ...

  2. 【HTTP】402- 深入理解http2.0协议,看这篇就够了!

    本文字数:3825字 预计阅读时间:20分钟 导读 http2.0是一种安全高效的下一代http传输协议.安全是因为http2.0建立在https协议的基础上,高效是因为它是通过二进制分帧来进行数据传 ...

  3. django基础之day10,cookie session token

    https://www.cnblogs.com/Dominic-Ji/p/10886902.html cookie session token

  4. java基础- 你真的了解运算符吗?

    一 前言 学习java运算符的基础是你对数学和计算机原理有一定的要求,如果文章中有些位运算不懂是生么意思,我建议大家去学习一下计算机原理,计算机组成类别的书籍,你也不用深入过多,只要了解计算机大概结构 ...

  5. VS2019添加Link to SQL类之后,LinqDataSource配置数据源没有可选项

    原创. 环境:visual studio 2019 ,.net framwork 4.0 问题: 1.新建Linq to SQL类后(.dbml文件),从服务器资源管理面板中数据库连接中,把表Mill ...

  6. JavaFX如何制作鼠标多击事件?

    JavaFX制作鼠标双击或者多击事件需要用到getClickCount()方法,这个方法需要添加addEventHandler()方法,addEventHandler()是事件方法. 1 scene. ...

  7. PHP7.3安装event扩展

    安装支持库libevent wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libe ...

  8. leetcode菜鸡斗智斗勇系列(3)--- Jewels and Stones珠宝和钻石

    1.原题: https://leetcode.com/problems/jewels-and-stones/ You're given strings J representing the types ...

  9. 推荐一种非常好的新版DSP库源码移植方式,含V7,V6和V5的IAR以及MDK5的AC5和AC6版本

    说明: 1.新版CMSIS V5.6里面的DSP库比以前的版本人性化了好多. 2.本帖为大家分享一种源码的添加方式,之前一直是用的库方便,不方便查看源码部分. 3.DSP教程可以还看第1版的,在我们的 ...

  10. react-组件间的传值

    父组件向子组件传值 父组件通过属性进行传递,子组件通过props获取 //父组件 class CommentList extends Component{ render(){ return( < ...