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生成随机验证码(中文验证码)示例
Apr 03 Python
在Python中操作列表之List.append()方法的使用
May 20 Python
python避免死锁方法实例分析
Jun 04 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
python实现简单爬虫功能的示例
Oct 24 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
python 命名规范知识点汇总
Feb 14 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
Python加密技术之RSA加密解密的实现
Apr 08 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
Session的工作方式
2006/10/09 PHP
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
Python基础中所出现的异常报错总结
2016/11/19 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python内置数据类型之列表操作
2018/11/12 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
给校长的建议书500字
2014/05/15 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
初中学生操行评语
2014/12/26 职场文书
迎新年主持词
2015/07/06 职场文书
教师岗位说明书
2015/09/30 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技