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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
解读python如何实现决策树算法
Oct 11 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python json.loads兼容单引号数据的方法
Dec 19 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Python如何在bool函数中取值
Sep 21 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
详解python的super()的作用和原理
Oct 29 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
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
JavaScript 特殊字符
2007/04/05 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
js获取页面description的方法
2015/05/21 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
python快速查找算法应用实例
2014/09/26 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
会计电算化专业应届大学生求职信
2013/10/22 职场文书
自强之星事迹材料
2014/05/12 职场文书
和谐社区口号
2014/06/19 职场文书
顶岗实习协议书
2015/01/29 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers