电子邮件:
一条E-mail消息仅仅是一个有着预定义格式的字符串。
想要直接用python在自己的机发送邮件是不行的,要配置一个叫做sendmail的东西。
所以一般自己写的代码发邮件,都是通过一些常用的邮件服务器发送的。
我们的代码只是向这个邮件服务器发送消息,让服务器去转发邮件。
也就是说,一般情况下,我们自己是不能开邮局的,而是做个小小的客户端而已。

先是一个发送邮件:

#!/usr/bin/env python 3.4
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = "xxxxx@163.com"
# 收件人,可以是多个
receivers = ['xxxxx@qq.com']


# 三个参数:第一个为纯文本,第二个plain设置文本格式,第三个为编码格式
message = MIMEText('大家关好窗户', 'plain', 'utf-8')
message['From'] = Header("Fable<xxxxx@163.com>",'utf-8')
message['To'] =  "xxxxx@qq.com"


subject = '放假通知'
message['Subject'] = Header(subject, 'utf-8')


smtpObj = smtplib.SMTP()
smtpObj.connect('smtp.163.com',25)
smtpObj.login(sender ,'你的授权码')
smtpObj.sendmail(sender,receivers,message.as_string())
smtpObj.quit()



先吐槽一下网易,以前想放个小游戏上去的时候,就被拒绝过。


这次只是自己写个测试邮件,居然把我的内容当做垃圾邮件,一直提示554错误。


所以大家还是用qq邮件做测试吧。


另外,要在邮箱里面设置,使用smtp协议什么的,还会给你一个授权码,其实就是一个特殊的登录密码。



python打包了许多Internet协议,例如imaplib、poplib、httplib、ftplib等



Internet协议


1.Internet地址


通常表示为一个用句点分开的4个数值序列


DNS域名服务器是运行在TCP/IP协议上的协议,自动将主机名转换为IP地址


localhost是特殊的主机名,指向127.0.0.1,也就是自己的机


通常主机名比IP地址更加稳定


2.网络接口


SMTP常规端口号为25.


互联网数字分配机构(Internet Assigned Numberd Authority,IANA)。


0-1023为公认端口


1024-49151为注册端口


49152-65535为动态端口




当前定义E-mail消息格式的标准是RFC2822,公布于2001年。它还为一些消息头的值定义了数据表示标准


示例

目的

To

To:Fable<fable@163.com>

消息接收人的地址

From

From:Zhu<Zhu@qq.com>

消息发送者的地址

Date

Date:Wed, 2 Mar 2017 19:58:08-1234(EST)

消息的发送日期

Subject

Subject:I Love You

消息的摘要或者标题,以便于阅读者理解

Cc

Cc:Michael@example.com,Sb<Sb@sb.com>

消息的抄送者地址,即使邮件并不是直接写给他们的


RFC 2822要求仅包含ASCII字符。如果要带有图片和其他二进制附件的邮件,可以利用扩展标准MIME(Multi-purpose Internet Mail Extension,多用途因特网邮件扩展协议)。

主要的MIME标准是RFC1521


读取邮件:

POP3:Post Office Protocol邮局协议的第三个版本

IMAP: Internet Message Access Protocol,最新的版本定义与RFC3501,拥有比POP3更多的特性

POP3更像一个邮箱,它在收取邮件之前,暂时保存邮件。IMAP则将邮件永久地存储于服务器之上。


学习一个新语言没必要样样精通,如果你不是专门写邮件服务器的,建议不用了解太多,知道一点就好了。

不过发邮件可以作为一些自动程序中发送消息报告,很方便的。所以只有发送的代码,没有接受的代码。

只了解到这么多,接着去看一下socket编程了。