Python如何基于smtplib发不同格式的邮件


Posted in Python onDecember 30, 2019

这篇文章主要介绍了Python如何基于smtplib发不同格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

常用邮箱SMTP、POP3域名及其端口号

发送普通文本内容的邮件

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

# smtp服务器信息
smtp_server = 'smtp.163.com'
server_port = 465

# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'

# 收件人地址,列表可发给多人
receivers = ['123456@qq.com', '3123123@qq.com', '12312@qq.com']

# 邮箱的正文内容,参数分别为内容,格式(plain 为纯文本),编码
msg = MIMEText('Here is content.', 'plain', 'utf-8')

# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题

# 发送邮件的操作
try:
  server = smtplib.SMTP_SSL() # SSL加密传输
  server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
  server.login(sender, password) # 登录发信邮箱
  server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
  server.quit() # 关闭服务器
  print('发送成功')

except smtplib.SMTPException:
  print('发送失败')

发送html格式的邮件

Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html

发送带有附件的邮件

发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。

import smtplib
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# smtp服务器信息
smtp_server = 'smtp.163.com'
server_port = 465

# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'

# 收件人地址,列表可发给多人
receivers = ['969831239@qq.com', '124123989@qq.com']

# 实例化,先添加正文内容
msg = MIMEMultipart()
msg.attach(MIMEText('This is content.', 'plain', 'utf-8'))

# 添加附件1
att1 = MIMEApplication(open('tips.py', 'rb').read(), 'utf-8')
att1['Content-Disposition'] = 'attachment; filename="down.py"'  # filename随便起,是接收到的附件显示名称
# att1["Content-Type"] = 'application/octet-stream'  Content-Type默认为application/octet-stream
msg.attach(att1)

# 添加附件2
att2 = MIMEApplication(open('source.jpg', 'rb').read(), 'utf-8')
att2['Content-Disposition'] = 'attachment; filename="girl.jpg"'
msg.attach(att2)

# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题

# 发送邮件的操作
try:
  server = smtplib.SMTP_SSL() # SSL加密传输
  server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
  server.login(sender, password) # 登录发信邮箱
  server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
  server.quit() # 关闭服务器
  print('发送成功')

except smtplib.SMTPException:
  print('发送失败')

发送正文带有图片的邮件

使用html格式的img标签指定图片cid显示图片,图片需要用MIMEImage上传并指定img Content-ID

import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# smtp服务器信息
smtp_server = 'smtp.qq.com'
server_port = 465

# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'

# 收件人地址,列表可发给多人
receivers = ['dsaisu@163.com', '76das23021@qq.com', '253das58570@qq.com']

# 实例化,添加正文内容,html格式,<img>标签 指定cid属性的值等于上传图片中Content-ID的值
msg = MIMEMultipart()
msg.attach(MIMEText('<img src="cid:demo" />', 'html', 'utf-8'))  # 与下面的Content-ID的值相同

# 添加图片
img = MIMEImage(open('source.jpg', 'rb').read())
img.add_header('Content-ID', 'demo')  # 与上面的cid相同
msg.attach(img)

# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题

# 发送邮件的操作
try:
  server = smtplib.SMTP_SSL() # SSL加密传输
  server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
  server.login(sender, password) # 登录发信邮箱
  server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
  server.quit() # 关闭服务器
  print('发送成功')

except smtplib.SMTPException:
  print('发送失败')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Python字符串替换实例分析
May 11 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
Django中使用locals()函数的技巧
Jul 16 Python
Python max内置函数详细介绍
Nov 17 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 #Python
Python类反射机制使用实例解析
Dec 30 #Python
Python读取YAML文件过程详解
Dec 30 #Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 #Python
pytorch中获取模型input/output shape实例
Dec 30 #Python
Python读取csv文件实例解析
Dec 30 #Python
Pytorch Tensor的统计属性实例讲解
Dec 30 #Python
You might like
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
python实现的希尔排序算法实例
2015/07/01 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
使用Python对Excel进行读写操作
2017/03/30 Python
理解python中生成器用法
2017/12/20 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
安全资料员岗位职责
2013/12/14 职场文书
社区维稳工作方案
2014/06/06 职场文书
介绍信样本
2015/01/31 职场文书