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基础教程之循环介绍
Aug 29 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
深入了解Python数据类型之列表
Jun 24 Python
详解python调度框架APScheduler使用
Mar 28 Python
python自定义异常实例详解
Jul 11 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
python实现简易内存监控
Jun 21 Python
Python返回数组/List长度的实例
Jun 23 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
如何卸载python插件
Jul 08 Python
python中编写函数并调用的知识点总结
Jan 13 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
用原生js做单页应用
2017/01/17 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
linux下python抓屏实现方法
2015/05/22 Python
Python函数式编程
2017/07/20 Python
Python IDLE入门简介
2017/12/08 Python
python图形用户接口实例详解
2019/12/16 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
编程输出如下图形
2013/11/24 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
管理信息系学生的自我评价
2014/01/11 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
社区护士演讲稿
2014/08/27 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python