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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
运动检测ViBe算法python实现代码
Jan 09 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python实现合并两个排序的链表
Mar 03 Python
了解不常见但是实用的Python技巧
May 23 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
python如何求圆的面积
Jul 01 Python
python使用布隆过滤器的实现示例
Aug 20 Python
python 实现批量图片识别并翻译
Nov 02 Python
Django数据模型中on_delete使用详解
Nov 30 Python
解决Python字典查找报Keyerror的问题
May 26 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的面向对象编程
2006/10/09 PHP
PHP+DBM的同学录程序(2)
2006/10/09 PHP
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
vue实现记事本功能
2019/06/26 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python 导入数据及作图的实现
2019/12/03 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
一份Java笔试题
2012/02/21 面试题
读书心得体会
2013/12/28 职场文书
新学期校长寄语
2014/01/18 职场文书
给物业的表扬信
2014/01/21 职场文书
总经理助理职责
2014/02/04 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
会计人员演讲稿
2014/09/11 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
保安辞职信范文
2015/02/28 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL