[1051]python yagmail发邮件

2023-11-17

yagmail 可以更简单的来实现自动发邮件功能。

github项目地址: https://github.com/kootenpv/yagmail

安装

pip install yagmail

开通SMTP服务

检查使用的邮箱服务器是否开启的SMTP服务,比如qq邮箱,登录进去,在设置-账户里面去开通SMTP,开启的时候有一个授权码,这个授权码要记住,因为待会发送邮件的时候登录的密码就是这个授权码,而不是你的登录密码。

简单例子

import yagmail

#链接邮箱服务器
yag = yagmail.SMTP(user="user@126.com", password="1234", host='smtp.126.com')

# 邮箱正文
contents = [
'This is the body, and here is just text http://somedomain/image.png',
'You can find an audio file attached.',
'/local/path/song.mp3'
]

# 发送邮件
yag.send(to='taaa@126.com', subject='subject', contents=contents)

总共四行代码搞定,是不是比上面的例子简单太多了。

给多个用户发送邮件

# 发送邮件
yag.send(to=['aa@126.com','bb@qq.com','cc@gmail.com'], subject='subject', contents=contents)

只需要将接收邮箱 变成一个list即可。

设置收件人别名

# 设置收件人别名
recipients = {
    'aliased@mike.com': 'Mike',
    'aliased@fred.com': 'Fred'
}
# 发送邮件
yag.send(to=recipients, subject='subject', contents=contents)

发送带附件的邮件

# 发送邮件
yag.send(to='aaaa@126.com', subject='发送附件', contents=contents, attachments=["d://log.txt","d://baidu_img.jpg"])
#关闭
yag.close()

只需要添加要发送的附件列表即可。

例子:

#-*- coding:utf-8 -*-
import yagmail
 
#连接邮箱服务器
yag = yagmail.SMTP(
    user="1112@qq.com",#邮箱账号
    password="11111",#邮箱开通smtp服务授权码
    host="smtp.qq.com"#服务器地址
    #smtp_ssl = True #如果用的是qq邮箱或者你们公司的邮箱使用安全协议的话,必须写上smtp_ssl = True
)
 
#发送邮件
yag.send(
    to='1305665491@qq.com',#如果是多个收件人的话,写成list就行了
    cc= '417418104@qq.com',#抄送
    subject='很开心你们会收到这邮件', #邮件标题
    contents='你们好啊,今天过得怎么呀', #邮件正文
    attachments=[r'E:\TestProgram\selenium\open_csdn.py', r'E:\TestProgram\selenium\geckodriver.log']
)

使用凭据密码连接,这是官方推荐的使用方式,代码不写明文密码,更加安全可靠。

参考】https://github.com/kootenpv/yagmail#username-and-password
注意】此功能依赖第三方库keyring,使用前需要先安装
pip install keyring
>>> from yagmail import register
>>> register('USERNAME', '******')

常用邮箱host以及port

sina.com: 
POP3服务器地址:pop3.sina.com.cn(端口:110) 
SMTP服务器地址:smtp.sina.com.cn(端口:25)   
sinaVIP: 
POP3服务器:pop3.vip.sina.com (端口:110) 
SMTP服务器:smtp.vip.sina.com (端口:25)  

sohu.com: 
POP3服务器地址:pop3.sohu.com(端口:110) 
SMTP服务器地址:smtp.sohu.com(端口:25)  

126邮箱: 
POP3服务器地址:pop.126.com(端口:110) 
SMTP服务器地址:smtp.126.com(端口:25)  

139邮箱: 
POP3服务器地址:POP.139.com(端口:110) 
SMTP服务器地址:SMTP.139.com(端口:25)  

163.com: 
POP3服务器地址:pop.163.com(端口:110) 
SMTP服务器地址:smtp.163.com(端口:25)  

QQ邮箱  
POP3服务器地址:pop.qq.com(端口:110) 
SMTP服务器地址:smtp.qq.com (端口:25)  
QQ企业邮箱 
POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995) 
SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465)

yahoo.com: 
POP3服务器地址:pop.mail.yahoo.com 
SMTP服务器地址:smtp.mail.yahoo.com  
yahoo.com.cn: 
POP3服务器地址:pop.mail.yahoo.com.cn(端口:995) 
SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)  

HotMail 
POP3服务器地址:pop3.live.com (端口:995) 
SMTP服务器地址:smtp.live.com (端口:587) 

gmail(google.com) 
POP3服务器地址:pop.gmail.com(SSL启用 端口:995) 
SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)  

263.net: 
POP3服务器地址:pop3.263.net(端口:110) 
SMTP服务器地址:smtp.263.net(端口:25)  
263.net.cn: 
POP3服务器地址:pop.263.net.cn(端口:110) 
SMTP服务器地址:smtp.263.net.cn(端口:25) 
x263.net: 
POP3服务器地址:pop.x263.net(端口:110) 
SMTP服务器地址:smtp.x263.net(端口:25) 

21cn.com: 
POP3服务器地址:pop.21cn.com(端口:110) 
SMTP服务器地址:smtp.21cn.com(端口:25) 

Foxmail: 
POP3服务器地址:POP.foxmail.com(端口:110) 
SMTP服务器地址:SMTP.foxmail.com(端口:25)  

china.com: 
POP3服务器地址:pop.china.com(端口:110) 
SMTP服务器地址:smtp.china.com(端口:25) 

tom.com: 
POP3服务器地址:pop.tom.com(端口:110) 
SMTP服务器地址:smtp.tom.com(端口:25)
  
etang.com: 
POP3服务器地址:pop.etang.com 
SMTP服务器地址:smtp.etang.com

参考:https://www.cnblogs.com/fnng/p/7967213.html
https://blog.csdn.net/heye13/article/details/83861983
https://www.jianshu.com/p/36fe7537b2a4
https://zhuanlan.zhihu.com/p/108304754
https://zhuanlan.zhihu.com/p/360600446

Python使用yagmail超简单发送邮件、keyring读取密钥、schedule定时任务、imbox操作:https://www.cnblogs.com/zwnsyw/p/13536326.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[1051]python yagmail发邮件 的相关文章

  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • 计算机图形学十五:基于物理的渲染(蒙特卡洛路径追踪)

    蒙特卡洛路径追踪 摘要 1 蒙特卡洛积分 Monte Carlo Integration 2 蒙特卡洛路径追踪 Monte Carlo Path Tracing Reference 本篇文章同步发表于知乎专栏 https zhuanlan
  • PHP与JSON的一些常用操作

    PHP把数据写入JSON文件 PHP读取JSON数据
  • C++ 抽象类

    抽象类 接口 接口描述了类的行为和功能 而无需完成类的特定实现 C 接口时通过抽象类实现的 设计抽象类的目的 是为了给其他类提供一个可以继承的适当的基类 抽象类本类不能被用于实例化对象 只能作为接口使用 注意 如果试图实例化一个抽象类的对象
  • 对象的初始化和清理

    对象的初始化和清理 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态 对其使用后果是未知 同样的使用完一个对象或变量 没有及时清理 也会造成一定的安全问题 c 利用了构造函数和析构函数解决上述问
  • visual studio2019创建解决方案,并在一个解决方案中包含多个项目

    系列文章目录 文章目录 系列文章目录 前言 一 使用步骤 前言 之前一直使用visual studio2019一直都是一个解决方案 下面包含一个工程 这次写一个网络同步的模块 具体使用boost的asio模块 我们需要建立一个解决方案 一个
  • 使用slickedit调试开源代码

    slickedit linux下的神器啊 阅读代码堪比 source insight 调试代码堪比 visual studio nginx优秀的web服务器 因为其具有多进程 后台进程的特点 因此本文选择以此为例讲解slickedit如何对
  • Java中的排序算法

    冒泡排序 核心思想 冒泡排序 核心思想 冒泡排序 Bubble Sort 又被称为气泡排序或泡沫排序 它是一种较简单的排序算法 它会遍历若干次要排序的数列 每次遍历时 它都会从前往后依次的比较相邻两个数的大小 如果前者比后者大 则交换它们的
  • LeetCode题解——394. 字符串解码

    题目相关 题目链接 LeetCode中国 https leetcode cn com problems decode string 注意需要登录 题目描述 给定一个经过编码的字符串 返回它解码后的字符串 编码规则为 k encoded st
  • 昨晚做梦面试官问我三色标记算法

    本文已收录至GitHub 推荐阅读 Java随想录 微信公众号 Java随想录 原创不易 注重版权 转载请注明原作者和原文链接 文章目录 三色标记算法 增量更新 原始快照 某天 爪哇星球上 一个普通的房间 正在举行一场秘密的面试 面试官 我
  • Sql server 存储过程加密

    本方法可用于加密SQL存储过程 函数或者触发器 使用 WITH ENCRYPTION 选项 WITH ENCRYPTION 子句对用户隐藏存储过程的文本 例子 IF OBJECT ID N Pro Encrypt Test IS NOT N
  • PySide6-控件教程-005-QLabel标签控件-内边距、缩放、伙伴关系

    QLabel 标签控件 本文摘录自我的开源教程 PySide6 代码式教程 QLabel CSDN 平台仅做镜像 答疑 纠错请至 GitHub 提交 issue 内边距 QLabel还可以调整内边距 启用内容缩放 以更细致地调节显示效果 s
  • 与游戏世界交互作业

    一 编写一个简单的鼠标打飞碟 Hit UFO 游戏 游戏内容要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由该 ro
  • 如何将Python项目部署到新电脑上运行?

    如何将Python项目部署到新电脑上运行 在工作中 可能需要在新服务器上部署项目代码 例如新增服务器 把测试环境的代码部署到生产环境等 在生活中 也会遇到换新电脑 需要将自己在旧电脑上写的 项目 代码拷贝到新电脑上运行 本文将这个过程中的关
  • SSH版本信息可被获取漏洞解决方法CVE-1999-0634

    直接执行 cd etc touch ssh banner change echo Version is empty gt gt etc ssh banner change cd etc ssh cp sshd config sshd con
  • log4j漏洞复现

    第一步 下载marshalsec 源码进行编译 https github com mbechler marshalsec 下载后进行编译打包 mvn clean package DskipTests 得到jar文件 在这里插入图片描述 第二
  • Stable Diffusion 系列教程

    目录 1 提示词 基本的规则 2 提示词分类 2 1内容性提示词 2 2 画风艺术派提示词 2 3 画幅视角 2 4画质提示词 3 反向提示词 3 1 内容性反向提示词 3 2 画质性反向提示词 4 实例分析 5 权重 5 1 方法一 5
  • 无线传感网必知必会

    一 填空题 传感器网络三大基本要素 传感器 感知对象 用户 观测者 传感器节点的基本功能模块包括 数据采集模块 数据处理和控制模块 通信模块 供电模块 四个 其中 通信模块 能量消耗最大 传感器节点通信模块的工作模式有 发送 接收 空闲 睡
  • java七大排序——7_归并排序

    归并排序 将数组分为2块 再到每一小块再分为两块 直到最后一个元素为一块 然后进行有序数组合并 最终合并为一个有序数组 代码实现 public static void mergeSorts int array mergeSortsInter
  • 软件设计师--结构化开发

    结构化开发 耦合 真题 内聚 真题 设计原则 真题 系统文档 真题 数据流图 数据流图基本数据元素 外部实体 数据存储 加工 数据流 父图子图平衡 加工既要有输入数据流也要有输出数据流 数据守恒 真题 数据字典 真题 杂题精选 耦合 真题
  • [1051]python yagmail发邮件

    文章目录 安装 开通SMTP服务 常用邮箱host以及port yagmail 可以更简单的来实现自动发邮件功能 github项目地址 https github com kootenpv yagmail 安装 pip install yag