Python自动发送邮件(可带附件)

Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

注意:使用前需要开启SMTP服务

案例:使用163邮箱来结合smtp模块发送邮件


 准备工作:

注册或者登陆163邮箱,进入“设置”-->“POP3/SMTP/IMAP”,打开“POP3/SMTP服务”,短信验证后输入客户端授权密码保存

Python自动发送邮件(可带附件)_第1张图片

Python自动发送邮件(可带附件)_第2张图片


Python代码:

send_email.py:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发送邮箱服务器
smtpserver = "smtp.163.com"

# 发送邮箱用户名密码
user = "[email protected]"
password = "输入自己的客户端授权密码"

# 发送和接收邮箱
sender = "[email protected]"
receive = "[email protected]"

# 发送邮件主题和内容
subject = "Web Selenium 自动化测试报告"
content = "

自动化测试,自学成才

" # HTML邮件正文 msg = MIMEText(content, 'html', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = "[email protected]" msg['To'] = "[email protected]" # SSL协议端口号要使用465 smtp = smtplib.SMTP_SSL(smtpserver, 465) # HELO向服务器标志用户身份 smtp.helo(smtpserver) # 服务器返回结果确认 smtp.ehlo(smtpserver) # 登录邮箱服务器用户名密码 smtp.login(user, password) print("Send email start...") smtp.sendmail(sender, receive, msg.as_string()) smtp.quit() print("email send end!")

代码分析:

我们可以使用SMTP对象的sendmail方法发送邮件,其中部分方法如下:
login(user,password)方法参数说明如下:

  • user:登录邮箱用户名
  • password:登录邮箱密码

sendmail(from_addr,to_addrs,msg,..)方法参数说明如下:

  • from_addr:邮件发送者地址
  • to_addrs:字符串列表,邮件发送地址
  • msg:发送信息

除SMTP模块,还用到了email模块,主要用来定义邮件的标题和正文:

Header()方法用来定义邮件标题

MIMETText()用于定义邮件正文,参数为html格式的文本。


 实现结果:

登录126邮箱查看,显示内容如图:

Python自动发送邮件(可带附件)_第3张图片


 

 带附件的邮件:

Python代码:

 

from email.mime.multipart import MIMEMultipart
# ...
send_file = open(r"E:\python_script\123.png", "rb").read()

att = MIMEText(send_file, "base64", 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment;filename="logo.png"'

msgRoot = MIMEMultipart()
msgRoot.attach(MIMEText(content, 'html', 'utf-8'))
msgRoot['Subject'] = subject
msgRoot['From'] = sender
msgRoot['To'] = ','.join(receives)
msgRoot.attach(att)
#...
smtp.sendmail(sender, receives, msgRoot.as_string())

 

转载于:https://www.cnblogs.com/NancyRM/p/8405099.html

你可能感兴趣的:(Python自动发送邮件(可带附件))