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实现的腾讯微博自动发帖小工具
Nov 11 Python
Python二维码生成库qrcode安装和使用示例
Dec 16 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
Python函数参数类型及排序原理总结
Dec 19 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
pycharm进入时每次都是insert模式的解决方式
Feb 05 Python
python周期任务调度工具Schedule使用详解
Nov 23 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连接Oracle for NT 远程数据库
2006/10/09 PHP
mysql 全文搜索 技巧
2007/04/27 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
2014年计生标语
2014/06/23 职场文书
小学校长汇报材料
2014/08/20 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
投标承诺函格式
2015/01/21 职场文书
会计人员岗位职责
2015/02/03 职场文书
导游词之河北邯郸
2019/09/12 职场文书