python发送邮件zmail库

2023-10-30

第三方库“zmail”和“yagmail”可实现邮件发送。在实际使用对比zmail比yagmail更简洁。使用zmail,无需登录OA邮箱,便可完成邮件的发送及附件的自动加载。

import zmail


def send_zmail(sender, sender_password, addressee, host, port=465, inspect_smtp_pop=False):
    # 使用邮件服务商的邮箱,代码中的"password"要填写"授权码",也有叫邮件第三方客户端独立密码。
    # 同时出现content_text和content_html时,只显示content_html
    mes = {
        'subject': 'zmail库邮件测试',  # 主题
        'content_text': '邮件内容:\n这是第一段',  # 正文内容(纯文本形式)
        'content_html': r'<h1 style="color:red">一级标题</h1><a href="https://www.baidu.com"><h2 style="color:green">二级标题点击查看更多<<</h2><p></a><img src="D:\zhuomian\demo\tom.gif" alt="测试图片显示" title="牛牛牛" width="100" height="150"></p>',
        'attachments': [r'D:\zhuomian\test_file\学习培训导入.xlsx', r'D:\zhuomian\导入文件\批量导入模板.xlsx',
                        r'D:\zhuomian\test_file\345.txt'],  # 附件
    }
    try:
        server = zmail.server(username=sender, password=sender_password, smtp_host=host, pop_port=port)
        if inspect_smtp_pop:  # 测试SMTP/POP连接
            print('SMTP连接成功') if server.smtp_able() else print('SMTP连接失败')
            print('POP连接成功') if server.pop_able() else print('POP连接失败')
        try:
            server.send_mail(
                recipients=addressee,
                mail=mes,
                # cc='',   # 密送人员,列表或字符串
            )
        except Exception as e:
            print(f'发送失败:{e}')
    except Exception as e:
        print(f'登录失败:{e}')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python发送邮件zmail库 的相关文章

  • 窗口多维 Tensorflow 数据集

    我有形状的二维数据m by n我想要的窗口大小w沿着第一个轴进入数据集m w许多二维数组 每个数组的大小w by n 例如如果数据是 0 1 2 3 4 5 6 7 8 9 10 11 然后我想将其窗口化 0 1 2 3 4 5 6 7 8
  • 对于 `mouseMoveEvent()` 来说鼠标移动太快

    以下是 Python 3 版本 UI XML 代码显示 4QProgessBar对于每个鼠标方向 标记为 X X Y Y 快速移动鼠标 以圆圈形式 将使 4QProgessBar上升到 99 然后是一些QProgessBar休息一下 直到鼠
  • 为什么我的 jupyter 笔记本中不需要“%matplotlib inline”?

    我只是想理解为什么我的 jupyter 安装不需要我运行 matplotlib inline 根据我读过的所有内容 我应该运行它才能将我的绘图内联到我的 jupyter 笔记本中 但事实是 无论我是否运行 matplotlib inline
  • 在类中设置默认值

    我正在用 Python 创建一个类 但我不确定如何正确设置默认值 我的目标是为所有类实例设置默认值 也可以通过类方法对其进行修改 但是 我希望在调用方法后恢复初始默认值 我已经能够使用下面所示的代码使其工作 它不是很 漂亮 所以我怀疑这是解
  • 给定一个正整数 n,如何打印高度为 n-1 的数字三角形?

    HackerRank 三角任务 https www hackerrank com challenges python quest 1 problem 仅使用算术运算 单个for loop 和一个单一的print陈述 不允许进行字符串操作 约
  • Python Ctypes:将返回的 C 数组转换为 python 列表,无需 numpy

    我正在使用 Python Ctypes 来访问一些 C 库 我连接到的函数之一返回const double 它实际上是一个双精度数组 当我在Python中得到结果时 如何将该数组转换为Python列表 C函数的签名 const double
  • Python:并行修改数组的简单方法

    这个问题可能听起来很简单 但作为 Python 并行化的新手 我肯定会遇到困难 我处理了 OpenMP for C 中的并行化问题 这要容易得多 我需要做的是并行修改矩阵的条目 就是这样 问题是 我无法使用简单的 joblib 库来做到这一
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • 如何将返回列表的 Celery 任务链接到一个组中?

    我想从 Celery 任务返回的列表创建一个组 以便对于任务结果集中的每一项 一个任务将添加到该组中 这是一个简单的代码示例来解释用例 这 应该是上一个任务的结果 celery task def get list amount In rea
  • Python NameError,变量“未定义”

    它返回的错误是 NameError name lives is not defined 我知道代码并不是尽可能高效 这是我的第一个项目 但是无论我尝试做什么 都会弹出这个错误 我尝试为其创建一个全局变量 但这没有帮助 我真的很感激一些帮助
  • 如何在 conda 中从一个文件安装多个包而不创建新环境?

    我从当前环境缺少的包的 yml 文件中获取了这些 我如何在当前环境中安装这些 channels defaults dependencies appdirs 1 4 3 py36h28b3542 0 asn1crypto 0 24 0 py3
  • 是否有像 python 的 issubclass 这样的东西,如果第一个参数不是类,它将返回 False?

    我想要issubclass 1 str 返回 false 1不是 的子类str 因为它根本不是一个类 所以我收到了 TypeError 有没有一个好的方法来测试这个而不诉诸try except try if issubclass value
  • BeautifulSoup - 抓取论坛页面

    我正在尝试抓取论坛讨论并将其导出为 csv 文件 其中包含 线程标题 用户 和 帖子 等行 其中后者是每个人的实际论坛帖子 我是 Python 和 BeautifulSoup 的初学者 所以我对此感到非常困难 我当前的问题是 csv 文件中
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • pytest 看不到正在测试的函数的日志

    我有一个像这样的烧瓶应用程序 from flask import Flask import logging app Flask name app route def catch all logging warning I m a warni
  • 熊猫:SettingWithCopyWarning:[重复]

    这个问题在这里已经有答案了 我尝试使用以下代码将列转换为 日期 df DATE pd to datetime df DATE or df DATE pd to datetime df DATE 但我收到以下错误 Users xyz anac
  • PDB.run - 重新启动 pdb 会话

    我对 python 和 pdb 比较陌生 但我对 gdb 有很多经验 我的问题是 如果我在代码中设置了多个断点 我会想要更改一些内容并重新运行我的调试会话并保留这些断点 但是 在我的 pdb 会话中输入 run 会导致我的会话终止并显示以下
  • 检查数组中是否有 3 个连续值高于某个阈值

    假设我有一个像这样的 np array a 1 3 4 5 60 43 53 4 46 54 56 78 有没有一种快速方法来获取 3 个连续数字都高于某个阈值的所有位置的索引 也就是说 对于某个阈值th 得到所有x其中 a x gt th
  • Python - 使用 BeautifulSoup 从 URL 列表中抓取文本的最简单方法

    使用 BeautifulSoup 从几个网页 使用 URL 列表 中抓取文本的最简单方法是什么 有可能吗 最好的 乔治娜 import urllib2 import BeautifulSoup import re Newlines re c
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器

随机推荐

  • docker学习(四)docker run用法

    目录 前言 一 参数列表 二 使用示例 前言 docker run 命令用于创建一个新的容器 启动一个新的进程 并为这个进程分配其独占的文件系统 网络资源等 通过参数设置可以覆盖镜像和容器的一些默认配置 一 参数列表 a 指定标准输入输出内
  • shell的内置命令

    shell有很多内置在其源代码中的命令 这些命令是内置的 所以shell不必到磁盘上搜索它们 执行速度因此加快 bash提供的help功能 能提供任何内置命令的在线帮助 表14 12列出了这些内置命令 表14 12 内置命令 命 令 功 能
  • eclipse常用设置

    eclipse常用设置 设置字体 window preferences General Appearace Colors and Fonts 设置字符编码 window preferences General Workspace Text
  • Spire.XLS 图表系列教程:C# 如何不使用工作数据创建Excel图表以及Excel雷达图

    更多资源查看 Spire XLS工作表教程 Spire Doc系列教程 Spire PDF系列教程 下载Spire XLS最新试用版 Spire XLS for NET 是一款专业的 NET Excel 组件 它可以用在各种 NET 框架中
  • 利用Dialogflow构建聊天机器人

    作者 Priyanka Vergadia Developer Advocate Google Anu Srivastava Developer Advocate AI ML 在如今的办公环境下 在线协同工作至关重要 保持生产力也是关键 聊天
  • 用Python自动化操作PPT,看完这篇文章就够了!

    作者 超级大洋葱806 https tangxing blog csdn net article details 109568830 大家好 我是小z 今天给大家分享一波Python自动化操作PPT的干货 1 PPT自动化能干什么 有什么优
  • django 项目中脚本启动

    django项目中的脚本如何快速方便启动 如上如 创建文件script放置脚本项目文件 在manage py同目录下创建run script py文件启动脚本 run script py代码 coding utf 8 import os i
  • ==与equals有什么区别

    与equals的区别 相同点 1 和equals都是用于完成比较操作 2 和equals的判定结果都是boolean值 true或false 不同点 1 是个运算符 本质上用于比较两个值是否相等 2 使用 运算符比较的值可以是基本类型的值
  • 在ubuntu20.4下安装ROS-noetic(全步骤经反复验证成功)

    注意 如果有conda环境 conda deactivate推出环境 1 4步骤都是很顺利的 如果下载失败请换源 第5步rosdep比较繁琐 但是根据我的使用情况 发现不按照rosdep也能正常使用 更新于2022 3 安装过程的打印信息可
  • 【图像处理】《数字图像处理-冈萨雷斯》笔记

    数字图像处理 冈萨雷斯 笔记 第一章 绪论 图像处理实例 伽马射线成像 X射线成像 紫外波段成像 可见光以及红外线成像 微波波段成像 无线电波成像 声波成像 图像处理的基本步骤 图像获取 滤波与增强 图像复原 彩色图像处理 小波与分辨率处理
  • JMeter 安装教程(详细安装教程)

    JMeter 安装教程 详细安装教程 一 jdk下载 注意 因为jmeter运行依赖jdk环境 所以在安装jmeter之前需要安装jdk且配置环境变量 需要jdk1 8以上版本 1 jdk下载地址 http www oracle com t
  • Vue实现下载及文件重命名

    效果如下 实现步骤 html
  • 理解JavaScript作用域和作用域链

    一 JavaScript中的作用域 作用域是当前的执行上下文 值和表达式在其中 可见 或可被访问 如果一个变量或表达式不在当前的作用域中 那么它是不可用的 function foo var x sfa console log x x is
  • 31黑马QT笔记之QPixmap、QImage、QPicture功能大总结

    31黑马QT笔记之QPixmap QImage QPicture功能大总结 QPixmap QImage既可以用于绘图 又可以作绘图设备时保存图片 而QPicture只能用于作绘图设备时保存图片状态 保存前需要用到前两种方法绘图 要显示必须
  • Go Lang 从Request中解析文件和参数

    如果要处理上传的文件 就必须使用multipart form data编码 处理multipart form data编码的请求时 解析使用ParseMultipartForm 之后从MultipartForm字段取值 前端上传代码
  • powershell 学习笔记

    命令模式 字符串不需要加引号 除变量和圆括号中的内容外的所有内容均可看作字符串 copy users txt accounts txt copy src dest write host 2 2 表达式模式 以最高级别语言分析方法来进行分析
  • 高通平台MSM8916LCM模块移植(一)-bootloader部分

    目录 LK中LCM启动流程 oem panel select mdss dsi initialize read panel id 此次移植打算分成两个模块来说 bootloader部分和kernel部分 在实际的移植调试过程中也是这么分成了
  • C语言期末复习编程练习之百钱百鸡问题

    古代数学家张丘建在 算经 一书中提出的数学问题 鸡翁一值钱五 鸡母一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 创作此系列的原因也是为了复习期末考试 各位见谅哦 include
  • 近7000万美元被盗:Curve被攻击事件分析

    7 月 31 日 以太坊编程语言Vyper发布公告称 Vyper 0 2 15 0 2 16 和 0 3 0 版本的递归锁失效 随后Curve Finance等相关协议出现了漏洞攻击事件 漏洞的根源都是某些版本的 Vyper 中出现故障的递
  • python发送邮件zmail库

    第三方库 zmail 和 yagmail 可实现邮件发送 在实际使用对比zmail比yagmail更简洁 使用zmail 无需登录OA邮箱 便可完成邮件的发送及附件的自动加载 import zmail def send zmail send