自动化发送邮件之SMTP

Posted puti306

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化发送邮件之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()

 

 

以上是关于自动化发送邮件之SMTP的主要内容,如果未能解决你的问题,请参考以下文章

接单日记SMTP发送邮件

Python SMTP 发送带附件电子邮件

Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码

Python 自动发送邮件

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记6

Python SMTP发送邮件Ⅱ