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访问类中docstring注释的实现方法
May 04 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
python编程实现归并排序
Apr 14 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python join方法使用详解
Jul 30 Python
python实现二分类的卡方分箱示例
Nov 22 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
django创建css文件夹的具体方法
Jul 31 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 编写的 25个游戏脚本
2009/05/11 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
php目录拷贝实现方法
2015/07/10 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
firefox中JS读取XML文件
2006/12/21 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
python使用分治法实现求解最大值的方法
2015/05/12 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
推广活动策划方案
2014/08/23 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
产品委托授权书范本
2014/09/16 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
门卫岗位职责
2015/02/09 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL