自动化发送邮件之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()

 

 
posted @ 2019-11-10 17:38  菩提306  阅读(487)  评论(0编辑  收藏  举报