自动化发送邮件之SMTP
一、思路
1、若是QQ邮箱需要在设置-账户里面开启服务
2、在python中smtplib库是专门用来处理邮件
3、自动化邮件发送实操
a、要处理的邮件主题,寄件人,收件人,邮件正文,附件,
b、邮件正文,:文本信息,HTML信息,图片内容
c、附件内容格式:txt,jpg,pdf,excel,doc
4、发送邮件附件流程
a、读取附件
b、添加附件
c、与内容一起发送
二、代码实现
1 import smtplib
2 from email import encoders
3 from email.mime.text import MIMEText # 处理邮件内容的库 email.mime
4
5 # 处理邮件附件 MIMEMUltipart,Header,MIMEBase
6 from email.mime.multipart import MIMEMultipart
7 from email.header import Header
8 from email.mime.base import MIMEBase
9
10 # 邮箱属性配置
11 mailserver = 'smtp.qq.com' # 邮箱服务端url,163邮箱就写smtp.163.com,非QQ邮箱一般使用SMTP,不需要有SSL
12 userName_SendMail = '45614456@qq.com' # 发件人
13 userName_AuthCode = 'tnppuxjie' # 邮箱发件授权码,qq邮箱需要授权码
14 received_mail = ['468465456@qq.com', '4546546546@qq.com'] # 定义邮件的接收者,可以定义多个
15
16 # 发送一封简单的邮件
17 content = '这是一个文本信息内容' # 定义发送内容
18 email = MIMEText(content, 'plain', 'utf-8') # 纯文本形式的邮件内容定义,通过MIMEText进行操作
19 email['Subject'] = '这里写邮件主题' # 定义邮件主题
20 email['From'] = userName_SendMail # 定义邮件发件人
21 email['To'] = ','.join(received_mail) # 定义接收人,接收人为多个用,分割
22
23
24 # 发送一封HTML邮件
25 content = '''
26 <p>这是一封HTML文本的邮件</p>
27 <p><a href='http://www.baidu.com'>点我啊</a></p>
28 '''
29 email = MIMEText(content, 'html', 'utf-8')
30 email['Subject'] = '这里写邮件主题' # 定义邮件主题
31 email['From'] = userName_SendMail # 定义邮件发件人
32 email['To'] = ','.join(received_mail) # 定义接收人,接收人为多个用,分割
33
34
35 # 发送带有附件的邮件
36 #附件配置邮箱
37
38 email = MIMEMultipart() # 只更换这项就OK
39 email['Subject'] = '这里写邮件主题' # 定义邮件主题
40 email['From'] = userName_SendMail # 定义邮件发件人
41 email['To'] = ','.join(received_mail) # 定义接收人,接收人为多个用,分割
42
43 # 非图片附件
44 att = MIMEBase('application','octet-stream')
45 att.set_payload(open('文件名','rb').read())
46 att.add_header('Contenet-Disposition','attachment',filename=Header('文件名.txt','gbk').encode())
47 encoders.encode_base64(att)
48 email.attach(att)
49
50
51 # 图片附件
52 att1 = MIMEBase('application','octet-stream')
53 att1.set_payload(open('图片名.jpg','rb').read())
54 att1.add_header('Contenet-Disposition','attachment',filename=Header('图片名.jpg','gbk').encode())
55 encoders.encode_base64(att1)
56 email.attach(att1)
57
58
59 # 发送邮件
60 smtp = smtplib.SMTP_SSL(mailserver, port=465) # 连接服务
61 smtp.login(userName_SendMail, userName_AuthCode) # 登录,需要传入用户名和授权码
62 smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string()) # 转换成str类型
63
64
65 # 关闭邮件
66 smtp.quit()