python使用smtplib模块发送邮件


Posted in Python onDecember 17, 2020

使用smtplib模块发送邮件,供大家参考,具体内容如下

1)使用smtplib模块发送简单邮件

步骤:

1.连接SMTP服务器,并使用用户名、密码登陆服务器
2.创建EmailMessage对象,该对象代表了邮件本身
3.调用sendmail()方法发送邮件

示例:

  • 我用自己的QQ邮箱(英文地址)给自己(原始地址)发一封邮件(QQ邮箱需要授权码(详见))
  • smtplib.SMTP() 代表的普通SMTP连接(默认端口21)
  • smtplib.SMTP_SSL() 代表基于SSL的SMTP连接(默认端口456,安全)
import smtplib
import email.message

fromaddr = 'wk_helloworld@qq.com' # 账号
password = '****************'  # QQ授权码

conn = smtplib.SMTP_SSL('smtp.qq.com', 465) # 创建SMTP连接 
conn.login(fromaddr, password)    # 登录邮件服务器
msg = email.message.EmailMessage()   # 创建邮件对象
msg.set_content('您好,Python邮件')   # 设置邮件内容(普通邮件)
conn.sendmail(fromaddr, ['929667257@qq.com'], msg.as_string())  # 发送邮件

conn.quit() # 退出连接

python使用smtplib模块发送邮件

2)发送内容完整的邮件

  • 为邮件设置标题、发件人名字、收件人名(设置 EmailMessage 对象对应的属性)
  • EmailMessage的set_content() 方法的第二个参数设置为 html 可将邮件内容改为 HTML 格式
import smtplib
import email.message

fromaddr = 'wk_helloworld@qq.com'
password = '****************'
 
conn = smtplib.SMTP_SSL('smtp.qq.com', 465)
conn.login(fromaddr, password) 
msg = email.message.EmailMessage()
msg.set_content('<h2>HTML邮件<h2>' + '<div style="border:1px:solid red">HTML邮件内容</div>', 'html', 'UTF-8')
msg['subject'] = 'HTML邮件'
msg['from'] = '痴迷<%s>' % fromaddr
msg['to'] = '淡然<%s>' % '929667257@qq.com'
conn.sendmail(fromaddr, ['929667257@qq.com'], msg.as_string())

conn.quit()

python使用smtplib模块发送邮件

3)发送图文并茂的邮件

在邮件中插入图片,需要先调用 EmailMessage 的 add_attachment() 方法来添加附件,该方法参数:

  • maintype:指定附件的主要类型
  • subtype:指定附件的子类型
  • filename:指定该附件的文件名
  • cid=img:指定该附件的资源 ID

通过<img…/>元素来插入附件中的图片(引用附件的cid属性)

import smtplib
import email.message
import email.utils

fromaddr = 'wk_helloworld@qq.com'
password = '****************'
toaddr = '929667257@qq.com'
 
conn = smtplib.SMTP_SSL('smtp.qq.com', 465)
conn.login(fromaddr, password) 
msg = email.message.EmailMessage()
first_id = email.utils.make_msgid()
msg.set_content('<h2>HTML邮件<h2>' 
    + '<div style="border:1px:solid red">html邮件内容</div>' 
    + '<img src="cid:' + first_id[1:-1] + '">', 'html', 'UTF-8')
msg['subject'] = 'HTML邮件'
msg['from'] = 'wk<%s>' % fromaddr
msg['to'] = 'k<%s>' % toaddr

# 添加附件
with open('图1.jpg', 'rb') as f:
 # 附件指定cid后,邮件正文可通过该cid来引用该图片
 msg.add_attachment(f.read(), maintype='image', subtype='jepg', filename='test1.jpg', cid=first_id)

with open('图2.jpg', 'rb') as f:
 msg.add_attachment(f.read(), maintype='image', subtype='jepg', filename='test2.jpg')
# with open('图3.gif', 'rb') as f:
#  msg.add_attachement(f.read(), maintype='image', subtype='gif', filename='test.jpg')

conn.sendmail(fromaddr, [toaddr], msg.as_string())

conn.quit()

python使用smtplib模块发送邮件

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

Python 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
django 控制页面跳转的例子
Aug 06 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
baselines示例程序train_cartpole.py的ImportError
May 20 Python
python实现计算器简易版
Dec 17 #Python
利用Python实现自动扫雷小脚本
Dec 17 #Python
用python读取xlsx文件
Dec 17 #Python
Python实现自动整理文件的脚本
Dec 17 #Python
Python用access判断文件是否被占用的实例方法
Dec 17 #Python
Python实例教程之检索输出月份日历表
Dec 16 #Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 #Python
You might like
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
js的一些常用方法小结
2011/06/29 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
全面了解js中的script标签
2016/07/04 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
详解vue高级特性
2020/06/09 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
高校辅导员推荐信范文
2013/12/25 职场文书
新郎新娘答谢词
2015/01/04 职场文书
离职感谢信
2015/01/21 职场文书
感恩节寄语2015
2015/03/24 职场文书
施工安全责任协议书
2016/03/23 职场文书