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 相关文章推荐
在Python中使用异步Socket编程性能测试
Jun 25 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
Oct 16 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
使用python模拟高斯分布例子
Dec 09 Python
python根据字典的键来删除元素的方法
Aug 16 Python
python用tkinter开发的扫雷游戏
Jun 01 Python
python实现MD5进行文件去重的示例代码
Jul 09 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
JS中的事件委托实例浅析
2018/03/22 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
节约用水标语
2014/06/11 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
班主任高考寄语
2015/02/26 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL