首页 技术 正文
技术 2022年11月23日
0 收藏 786 点赞 4,058 浏览 1757 个字

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

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

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

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


准备工作:

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

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

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


Python代码:

send_email.py:

import smtplib
from email.mime.text import MIMEText
from email.header import Header# 发送邮箱服务器
smtpserver = "smtp.163.com"# 发送邮箱用户名密码
user = "nancyrm2018@163.com"
password = "输入自己的客户端授权密码"# 发送和接收邮箱
sender = "nancyrm2018@163.com"
receive = "nancyrm2018@126.com"# 发送邮件主题和内容
subject = "Web Selenium 自动化测试报告"
content = "<html><h1 style='color:red'>自动化测试,自学成才</h1></html>"# HTML邮件正文
msg = MIMEText(content, 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = "nancyrm2018@163.com"
msg['To'] = "nancyrm2018@126.com"# 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自动发送邮件(可带附件)


 带附件的邮件:

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())
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,960
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,484
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,330
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,113
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,745
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,779