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 相关文章推荐
Python创建文件和追加文件内容实例
Oct 21 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
python getopt详解及简单实例
Dec 30 Python
Python set常用操作函数集锦
Nov 15 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
3分钟学会一个Python小技巧
Nov 23 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
python动态规划算法实例详解
Nov 22 Python
如何用Django处理gzip数据流
Jan 29 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
php flush类输出缓冲剖析
2008/10/19 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
理解javascript回调函数
2014/12/28 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
servlet面试题
2012/08/20 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
城管大队整治方案
2014/05/06 职场文书
归元寺导游词
2015/02/06 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL