欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python☞自动发送邮件

程序员文章站 2022-05-04 13:13:02
一.SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 二.smtplib 模块 Python的smptlib模块提供了一种很方便的途径来发送电子邮件。它对SMTP协议进行了 ......

一.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☞自动发送邮件

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

4.代码如下:

# 这边我是读取文件中的内容充当发送邮件内容的,若想测试可以把传递的参数去掉,并注释掉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☞自动发送邮件

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