Python SMTP邮件模块详解
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
实例:
1.使用Python发送纯文本格式和html格式的邮件.
email.mime.text email.utils msg = MIMEText(message, , ) msg[] = formataddr([,]) msg[] = formataddr([,]) msg[] = server = smtplib.SMTP(, 25 server.login(, server.sendmail(, [ u u == cpu = 100 disk = 500 mem = 50 i range(1 cpu > 90 alert = u disk > 90 alert = u mem > 80 alert = u email(alert)
#Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html
1 msg = MIMEText('<html><body><h1>Hello</h1>' +2 '<p>send by <a href="http://www.python.org">Python</a>...</p>' +3 '</body></html>', 'html', 'utf-8')
2.Python 发送带附件的邮件.
发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。
1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import smtplib 5 from email.mime.text import MIMEText 6 from email.utils import formataddr 7 from email.mime.multipart import MIMEMultipart 8 9 def email(message):10 11 msg = MIMEMultipart()12 msg['From'] = formataddr(["管理员",'ylemail2012@sina.cn'])13 msg['To'] = formataddr(["Saneri",'349622541@qq.com'])14 msg['Subject'] = "Zabbix报警系统!"15 msg.attach(MIMEText(message, 'plain', 'utf-8'))16 17 #---这是附件部分---18 # 构造附件1,文本类型附件19 att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')20 att1["Content-Type"] = 'application/octet-stream'21 # 这里的filename可以任意写,写什么名字,邮件中显示什么名字22 att1["Content-Disposition"] = 'attachment; filename="test.txt"'23 msg.attach(att1)24 25 # 构造附件2,jpg类型附件26 from email.mime.application import MIMEApplication27 att2 = MIMEApplication(open('001.jpg','rb').read())28 att2.add_header('Content-Disposition', 'attachment', filename="001.jpg")29 msg.attach(att2)30 #构造附件3,pdf类型附件31 att3 = MIMEApplication(open('test.pdf','rb').read())32 att3.add_header('Content-Disposition', 'attachment', filename="test.pdf")33 msg.attach(att3)34 #构造附件4,xlsx类型附件35 att4 = MIMEApplication(open('test.xlsx','rb').read())36 att4.add_header('Content-Disposition', 'attachment', filename="test.xlsx")37 msg.attach(att4)38 #构造附件5,mp3类型附件39 att5 = MIMEApplication(open('test.mp3','rb').read())40 att5.add_header('Content-Disposition', 'attachment', filename="test.mp3")41 msg.attach(att5)42 43 try:44 server = smtplib.SMTP("smtp.sina.com", 25)45 #set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息46 #server.set_debuglevel(1)47 #login()方法用来登录SMTP服务器48 server.login("ylemail2012@sina.cn","password")49 #sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str50 server.sendmail('ylemail2012@sina.cn', ['349622541@qq.com',], msg.as_string())51 print u"邮件发送成功!"52 server.quit()53 except smtplib.SMTPException:54 print u"Error: 无法发送邮件"55 if name == 'main':56 cpu = 10057 disk = 50058 mem = 5059 for i in range(1):60 if cpu > 90:61 alert = u"CPU出问题!"62 email(alert)63 if disk > 90:64 alert = u"硬盘出问题!"65 email(alert)66 if mem > 80:67 alert = u"内存出问题!"68 email(alert)
3.在 HTML 文本中添加图片
邮件的 HTML 文本中一般邮件服务商添加外链是无效的,正确添加突破的实例如下所示:
1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import smtplib 5 from email.mime.multipart import MIMEMultipart 6 from email.mime.text import MIMEText 7 from email.mime.image import MIMEImage 8 from email.utils import formataddr 9 10 def email():11 msg = MIMEMultipart()12 msg['From'] = formataddr(["管理员",'ylemail2012@sina.cn'])13 msg['To'] = formataddr(["Saneri",'349622541@qq.com'])14 msg['Subject'] = "Zabbix报警系统!"15 msg.attach(MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!','html','utf-8'))16 17 fp = open('001.jpg', 'rb')18 msgImage = MIMEImage(fp.read())19 fp.close()20 msgImage.add_header('Content-ID', '<image1>')21 msg.attach(msgImage)22 try:23 server = smtplib.SMTP("smtp.sina.com", 25)24 server.login("ylemail2012@sina.cn","password")25 server.sendmail('ylemail2012@sina.cn', ['349622541@qq.com',], msg.as_string())26 print u"邮件发送成功!"27 server.quit()28 except smtplib.SMTPException:29 print u"Error: 无法发送邮件"30 31 if name == 'main':32 email()
4.同时支持HTML和Plain格式
如果我们发送HTML邮件,收件人通过浏览器或者Outlook之类的软件是可以正常浏览邮件内容的,但是,如果收件人使用的设备太古老,查看不了HTML邮件怎么办?
办法是在发送HTML的同时再附加一个纯文本,如果收件人无法查看HTML格式的邮件,就可以自动降级查看纯文本邮件。
利用MIMEMultipart
就可以组合一个HTML和Plain,要注意指定subtype是alternative
:
1 msg = MIMEMultipart('alternative')2 msg['From'] = ...3 msg['To'] = ...4 msg['Subject'] = ...5 6 msg.attach(MIMEText('hello', 'plain', 'utf-8'))7 msg.attach(MIMEText('<html><body><h1>Hello</h1></body></html>', 'html', 'utf-8'))8 # 正常发送msg对象...
【相关推荐】
5. php smtp发送邮件
7. python smtplib模块发送SSL/TLS安全邮件实例
以上是Python SMTP邮件模块详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

在CentOS系统上启用PyTorchGPU加速,需要安装CUDA、cuDNN以及PyTorch的GPU版本。以下步骤将引导您完成这一过程:CUDA和cuDNN安装确定CUDA版本兼容性:使用nvidia-smi命令查看您的NVIDIA显卡支持的CUDA版本。例如,您的MX450显卡可能支持CUDA11.1或更高版本。下载并安装CUDAToolkit:访问NVIDIACUDAToolkit官网,根据您显卡支持的最高CUDA版本下载并安装相应的版本。安装cuDNN库:前

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

MinIO对象存储:CentOS系统下的高性能部署MinIO是一款基于Go语言开发的高性能、分布式对象存储系统,与AmazonS3兼容。它支持多种客户端语言,包括Java、Python、JavaScript和Go。本文将简要介绍MinIO在CentOS系统上的安装和兼容性。CentOS版本兼容性MinIO已在多个CentOS版本上得到验证,包括但不限于:CentOS7.9:提供完整的安装指南,涵盖集群配置、环境准备、配置文件设置、磁盘分区以及MinI

在CentOS系统上进行PyTorch分布式训练,需要按照以下步骤操作:PyTorch安装:前提是CentOS系统已安装Python和pip。根据您的CUDA版本,从PyTorch官网获取合适的安装命令。对于仅需CPU的训练,可以使用以下命令:pipinstalltorchtorchvisiontorchaudio如需GPU支持,请确保已安装对应版本的CUDA和cuDNN,并使用相应的PyTorch版本进行安装。分布式环境配置:分布式训练通常需要多台机器或单机多GPU。所

在CentOS系统上安装PyTorch,需要仔细选择合适的版本,并考虑以下几个关键因素:一、系统环境兼容性:操作系统:建议使用CentOS7或更高版本。CUDA与cuDNN:PyTorch版本与CUDA版本密切相关。例如,PyTorch1.9.0需要CUDA11.1,而PyTorch2.0.1则需要CUDA11.3。cuDNN版本也必须与CUDA版本匹配。选择PyTorch版本前,务必确认已安装兼容的CUDA和cuDNN版本。Python版本:PyTorch官方支

CentOS 安装 Nginx 需要遵循以下步骤:安装依赖包,如开发工具、pcre-devel 和 openssl-devel。下载 Nginx 源码包,解压后编译安装,并指定安装路径为 /usr/local/nginx。创建 Nginx 用户和用户组,并设置权限。修改配置文件 nginx.conf,配置监听端口和域名/IP 地址。启动 Nginx 服务。需要注意常见的错误,如依赖问题、端口冲突和配置文件错误。性能优化需要根据具体情况调整,如开启缓存和调整 worker 进程数量。
