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实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
Python学习思维导图(必看篇)
Jun 26 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 Python
浅谈Python 参数与变量
Jun 20 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
Python如何使用vars返回对象的属性列表
Oct 17 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
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
python如何实现代码检查
2019/06/28 Python
详解python如何引用包package
2020/06/07 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
管理科学大学生求职信
2013/11/13 职场文书
篮球比赛策划方案
2014/06/05 职场文书
中职招生先进个人材料
2014/08/31 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
走近毛泽东观后感
2015/06/04 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers