SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 smtplib 模块 Python的smptlib模块提供了一种很方便的途径来发送电子邮件。它对SMTP协议进行了简单的封装。们可以使用SMTP对象的sendmail发放发送邮件,首先我们看下此模块重要的方法如何使用 1.connect(self,host='localhost',port=0)   host:邮件服务器地址   port:邮件服务器端口(不输入参数默认为25)


SMTP协议

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

smtplib模块

Python的smptlib模块提供了一种很方便的途径来发送电子邮件。它对SMTP协议进行了简单的封装。们可以使用SMTP对象的sendmail发放发送邮件,首先我们看下此模块重要的方法如何使用

1.connect(self,host='localhost',port=0)

host:邮件服务器地址

port:邮件服务器端口(不输入参数默认为25)

2.login(self,user,password)

user:登录邮箱用户名

password:登录邮箱密码

3.sendmail(self,from_addr,to_addrs,msg)

from_addr:发送邮件人地址

to_addrs:接受邮件人地址

msg:发送的内容

一般我们发送邮件时有两种方式。

方式一:自己邮箱的web页面,输入用户名和密码登录,打开发邮件页面,填写对方的邮箱地址及邮件标题与正文,完成后点击发送。

方式二:下载安装邮箱客户端,填写邮箱账号密码及邮箱服务器,一般的邮箱客户端会默认记下这些信息,所以,这个过程只需要填写依次,后面发邮件的过程与方法一相同。而我们通过python发送邮件更像方式二,因为需要填写邮箱服务器。

实例

我使用的测试邮箱系统为QQ邮箱,在进行测试之前我们需要设置一下QQ邮箱,获取QQ邮箱的授权码(授权码是用于登录第三方邮件客户端的专用密码)用来以后登录邮箱时的密码,对于其他邮箱如何获取授权码请自行百度

1.打开QQ邮箱,依次点击【设置】-【账户】如图1:

图1:

python☞自动发送邮件_邮件服务器

2.找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”操作列表,图2:

python☞自动发送邮件_邮件服务器_02

3.开启前2个服务,并点击【生成授权码】,我这边得到的授权码为:gifhhsbgqyovbhhc

实现代码

这边我是读取文件中的内容充当发送邮件内容的,若想测试可以把传递的参数去掉,并注释掉14-20行,加一行file_msg='<html><h1> python test send imail</h1></html>'


 1 #! user/bin/python
2 '''
3 代码说明:自动发送邮件
4 编写日期:2018.07.16
5 设计者:linux超
6 '''
7
8 import smtplib
9 from email.mime.text import MIMEText
10 from email.header import Header
11 import time
12
13 def send_email(filename):
14 # 打开报告文件读取文件内容
15 #filename = './report/'+ time.strftime('%Y-%m-%d %H_%M_%S')
16 f = open(filename,'r')
17 file_msg = f.read()
18 #print(filename)
19 #print(file_msg)
20 f.close()
21 # 邮件服务器
22 smtpserver = 'smtp.qq.com'
23 # 发件人用户名和密码
24 user = 'username@qq.com'
25 password = 'gifhhsbgqyovbhhc'
26 # 发件人
27 sender = 'sender@qq.com'
28 # 收件人
29 receiver = 'receiver@qq.com'
30 # 邮件主题
31 subject = 'Python test send email'
32 # 邮件设置
33 msg = MIMEText(file_msg,'html','utf-8')
34 msg['subject'] = Header(subject,'utf-8')
35 msg['from'] = sender
36 # 连接服务器,登录服务器,发送邮件
37 smtp = smtplib.SMTP()
38 smtp.connect(smtpserver,465)
39 smtp.login(user,password)
40 try:
41 smtp.sendmail(sender,receiver,msg.as_string())
42 except Exception as e:
43 print('send failed',e)
44 else:
45 print('send success!')
46 smtp.quit()# 结束SMTP会话
47 print('send email success!')
48 if __name__ == '__main__':
49 send_email('./report/2018-07-16 13_09_21.txt')


5.结果:

python☞自动发送邮件_发送邮件_03

总结: 后续会填加发送带附件的案例

作者: Linux超