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实现竖排打印传单手机号码易撕条
Mar 16 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
python实现上传下载文件功能
Nov 19 Python
分析python切片原理和方法
Dec 19 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
python调用matlab的m自定义函数方法
Feb 18 Python
python十进制转二进制的详解
Feb 07 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
django上传文件的三种方式
Apr 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
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
php对数组排序的简单实例
2013/12/25 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
二级域名转向类
2006/11/09 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
Python同时处理多个异常的方法
2020/07/28 Python
pytorch中index_select()的用法详解
2021/01/06 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
工程承包协议书
2014/04/22 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
商场收银员岗位职责
2015/04/07 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL