Python3中通过Zmail库发送电子邮件

2023-05-16

一、Zmail 是什么

Zmail或许是最简单的邮件收发库,开发网址为:

https://github.com/ZYunH/zmail

GITHUB中的Zmail
snipaste_20180318_202743.png

在上述github下载压缩包 zmail-master.zip 。说明文档在其中,见Readme.md和README-cn.md。其中介绍中说:

Zmail allows you to send and get emails as possible as it can be in python.

Zmail 允许你发送和接受邮件尽可能的简单。你不需要去检查你的服务器地址、端口以及自己构造MIME对象,使用Zmail,你只需要关注你的邮件内容即可。

Zmail还在开发进步中,基本功能已经不错了,有些功能仍不完善。

二、在Anaconda3中安装Zmail

(1)通过pip安装
pip install zmail

联网后,在Windows命令窗中执行及反馈信息:

(base) C:\Users\邵玉斌>pip install zmail
Collecting zmail
  Downloading zmail-0.0.6-py3-none-any.whl
Installing collected packages: zmail
Successfully installed zmail-0.0.6

(2)离线安装

说明文档中是这样说的:(我没试过)

你可以下载Zmail的master分支,将其解压,切换到相应目录,然后执行

python  setup.py install

三、实验:使用Zmail发送邮件

3.1 首先要为使用QQ邮箱发送更改配置

Zmail简化了邮件发送的配置方式,将常用邮箱pop和smtp的端口配置放在了如C:\ProgramData\Anaconda3\Lib\site-packages\zmail\info.py文件中。其中内容是:

"""
zmail.info
~~~~~~~~~~~~
This module provide supported server information.


'Server_provider_address':{
    'protocol':('protocol_server_address', port, ssl),
}
"""
supported_server = {
    '163.com': {
        'smtp': ('smtp.163.com', 994, True),
        'pop3': ('pop.163.com', 995, True),
        'imap': ('imap.163.com', 993, True)

    },
    '126.com': {
        'smtp': ('smtp.126.com', 994, True),
        'pop3': ('pop.126.com', 995, True),
        'imap': ('imap.126.com', 993, True)

    },
    'yeah.net': {
        'smtp': ('smtp.yeah.net', 994, True),
        'pop3': ('pop.yeah.net', 995, True),
        'imap': ('imap.yeah.net', 993, True)

    },
    'qq.com': {
        'smtp': ('smtp.qq.com', 465, True),
        'pop3': ('pop.qq.com', 995, True),
    },
    'gmail.com': {
        'smtp': ('smtp.gmail.com', 587, False),
        'pop3': ('pop.gmail.com', 995, True),
    },
    'sina.com': {
        'smtp': ('smtp.sina.com', 465, True),
        'pop3': ('pop.sina.com', 995, True),
    },
    'outlook.com': {
        'smtp': ('smtp-mail.outlook.com', 587, False),
        'pop3': ('pop.outlook.com', 995, True),
    },

}


def get_supported_server_info(mail_address, protocol):
    """Use user address to get server address and port."""
    provider = mail_address.split('@')[1]

    if provider in supported_server:
        server_info = supported_server[provider]
        if protocol in server_info:
            return server_info[protocol]

    if protocol == 'smtp':
        return 'smtp.' + provider, 465, True
    elif protocol == 'pop3':
        return 'pop3.' + provider, 995, True

如果用QQ邮箱帐号发送,请注意确认其中SMTP端口号要由默认的25改为465

    'qq.com': {
        'smtp': ('smtp.qq.com', 465, True),
        'pop3': ('pop.qq.com', 995, True),
    }
3.2 发送邮件

先要在QQ邮箱配置中允许使用客户端收发邮件。
snipaste_20180318_205429.png

然后编写发送简单邮件的Python代码

#文件名:SendByZmail.py
import zmail
# 你的邮件内容
mail_content ={
    'subject': 'Success!',  # 邮件标题写在这
    'content': 'This message from zmail!',  # 邮件正文写在这
}

# 使用你的邮件账户名和密码登录服务器
server = zmail.server("这里填上邮箱XXXXXX@qq.com", "这里是密码XXXXXX")
# 发送邮件指令
server.send_mail(["这里填上接收邮箱YYYYY@qq.com"], mail_content)

执行:

python SendByZmail.py

结果在QQ邮箱中收到邮件。

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

Python3中通过Zmail库发送电子邮件 的相关文章

  • TCP和UDP协议发送数据包的大小

    在进行UDP编程的时候 我们最容易想到的问题就是 一次发送多少bytes好 当然 这个没有唯一答案 xff0c 相对于不同的系统 不同的要求 其得到的答案是不一样的 这里仅对像ICQ一类的发送聊天消息的情况作分析 xff0c 对于其他情况
  • Nodejs开发:如何让node app的程序一直运行?

    情境 运行nodejs的程序 xff0c 使用命令 xff1a node xxx js xff0c 但是关掉终端 xff0c 程序也关闭了 xff0c 如何让node app的程序一直运行 xff1f 解决 1 安装forever npm
  • Godot基础教程02:全都是节点

    在这里先劝退一波人 xff1a 本教程只会涉及2D内容 xff0c 不会涉及3D内容 创建节点 接上一章 xff0c 在左侧的场景面板中 xff0c 可以看到 xff1a 由于本教程只讲2D内容 xff0c 所以这里我们应该选择2D场景 x
  • docker安装gitlab-ce镜像,使用其他端口,亲测可用

    首先鄙视一下那些直接复制粘贴当自己博文的 xff0c 误导别人 xff0c 害我改了好久T T 安装步骤 xff1a 创建数据目录 mkdir p data gitlab config mkdir p data gitlab logs mk
  • iOS 录音,播放,转码MP3,上传语音文件

    语音文件 AVAudioRecorder recorder NSTimer timer NSString urlPlay BOOL isPlay pragma mark 61 61 61 61 61 61 61 61 61 语音文件 61
  • CentOS使用yum安装MySQL5.7报检索密钥错误解决方法

    在CentOS上使用yum安装MySQL时检索密钥错误的解决方法 参考 使用yum安装MySQL时报错 yum y install mysql mysql server yum y install mysql community serve
  • 安装django

    使用pip安装 pip install django 61 61 span class hljs string 39 1 8 39 span 检查django版本 python c span class hljs string 39 imp
  • python,pycharm报错 ModuleNotFoundError: No module named PIL最简单的解决方法

    python pycharm报错 ModuleNotFoundError No module named 39 PIL 最简单的解决方法 1进入cmd命令 2输入pip install Pillow即可 如图 如果对你有帮助 xff0c 请
  • docker中使用Ubuntu中文乱码问题解决

    一 前言 最近在docker中使用Ubuntu作为编译环境 xff0c 遇到了中文乱码情况 xff0c 分为不同的解决场景 xff0c 下面分别给出解决方法 下面的方法都不是将系统的语言修改为中文 xff0c 而是能够正确显示和输入中文 g
  • 在docker的centos镜像中使用systemctl启动slapd服务报错

    前言 使用docker搭建服务环境 xff0c 拉取了一个Centos7镜像 xff0c 在镜像中使用systemctl命令启动sladpd服务 xff0c 已经使用 privileged 61 true启用特权模式 xff0c 但还是报错
  • 逻辑卷管理器(LVM)

    一 什么是LVM xff1f LVM Logical Volume Manager 逻辑卷管理是在Linux2 4内核以上实现的磁盘管理技术 它是Linux环境下对磁盘分区进行管理的一种机制 现在不仅仅是Linux系统上可以使用LVM这种磁
  • Ubuntu使用Docker搭建编译环境完整教程

    前言 因为只有一台编译服务器 xff0c 但是我们需要在服务器上搭建不同的编译环境 xff0c 不同的编译环境区别巨大 xff0c 甚至可能需要是不同的Ubuntu版本 xff0c 所以我们可以使用Docker xff0c 搭建不同的编译环
  • 最新Gerrit2.16.15版本用户指南-中文文档

    这是为Gerrit最终用户准备的Gerrit指南 它说明了标准的Gerrit工作流程以及指导用户可以根据个人喜好来设置并使用Gerrit 为了更好地理解本指南 xff0c 读者最好了解Git xff0c 并熟悉基本的git命令和工作流程 什
  • Ubuntu 14.04安装Sambaf服务并设置为开机启动

    1 需求 我的需求是将Ubuntu服务器上的用户目录 xff08 比如 home yasin xff09 映射给Windows访问 xff0c 这样就可以在Windows下编辑代码 xff0c 修改完成后在Linux环境编译 2 安装 sp
  • Git Commit message编写指南

    一 Commit message 的作用 格式化的Commit message xff0c 有几个好处 1 提供更多的历史信息 xff0c 方便快速浏览 比如 xff0c 下面的命令显示上次发布后的变动 xff0c 每个commit占据一行
  • Windows下写代码并使用 SSHFS快速部署到 Linux 进行调试

    前言 很多时候 xff0c 因为不熟悉vim或者更喜欢Windows下的一些IDE xff0c 我们需要在Windows写代码并部署到Linux服务器上进行调试 相信很多程序员都有这个需求 xff0c 也有很多自己的解决方法 常见的有使用G
  • Android开发——java.lang.SecurityException: Permission Denial

    记录一个在日常开发当中遇到的错误 xff1a java lang SecurityException Permission Denial startForeground from pid 61 2345 uid 61 10395 requi
  • OpenWrt打开和关闭指定端口shell脚本

    最近使用小米路由器插件Misstar Tools xff0c 因为它在小米路由器3上使用的端口为1024 xff0c 而且没有密码 xff0c 所以把这个端口暴露在公网上就非常不安全 但有时候我们确实就想在公网上使用这个插件 xff0c 比
  • Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析

    前言 因为最近将家里的电信宽带换成了公网IP xff0c 在二手鱼上面淘了点破烂 xff0c 搭建了一些服务 xff08 比如NAS xff09 而电信的公网IP并不是固定的 xff0c 要想持续稳定的访问到搭建的服务 xff0c 我们可以
  • 使用rsync每天自动进行远程增量备份的shell脚本

    rsync incremental backup 可配置的bash脚本 xff0c 使用rsync将数据的增量备份发送到本地或远程目标 项目地址 xff1a https github com pedroetb rsync increment

随机推荐

  • 使用docker-compose搭建Nextcloud个人云盘并开启https教程

    一 前言 之前一直采用LANMP直接搭建服务 xff0c 但后来使用docker后 xff0c 搭建和迁移数据都很方便 xff0c 所以将服务都容器化 下面介绍一下使用docker compose搭建Nextcloud xff0c 并且使用
  • 使用docker-compose搭建WordPress网站并开启https教程

    一 前言 之前一直采用LANMP直接搭建服务 xff0c 但后来使用docker后 xff0c 搭建和迁移数据都很方便 xff0c 所以将服务都容器化 下面介绍一下使用docker compose搭建WordPress网站 xff0c 并且
  • 使用Docker搭建自己的在线密码管理器软件-Bitwarden

    前言 因为现在网络安全问题愈发严重 xff0c 黑客经常通过互联网已泄露的用户和密码信息进行撞库攻击 xff0c 而且很多用户在不同网站使用的是相同的帐号密码 xff0c 所以为不同的网站设置不同的密码就非常重要 但密码不同尤其是使用随机生
  • 如何在Docker容器里开启fail2ban防止SSH暴力破解

    一 前提介绍 Docker容器里开启了SSH服务 xff0c 但是发现有大量的暴力破解进程 xff0c 需要使用fail2ban防止SSH暴力破解 xff0c 将攻击的IP拉黑 二 原因分析 但是直接安装fail2ban xff0c 和没有
  • PT工具之Docker全家桶+HTTPS详细配置教程

    一 前言 因为使用Docker的隔离性 可移植性比较好 xff0c 所以自己使用的服务一般都使用Docker部署 xff0c 这样每次迁移时将挂载的目录备份即可 xff0c 不需要考虑机器的版本和兼容性 xff0c 更换设备时基本可以做到一
  • 【原理篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程

    一 前言 之前写了篇教程 xff0c PT工具之Docker全家桶 43 HTTPS详细配置教程 xff0c 主要讲述了使用Docker部署常用工具及反向代理上https xff0c 之前预告过还写一篇辅种教程合集的 xff0c 故有了此篇
  • 【操作篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程

    一 前言 之前写了篇教程 xff0c PT工具之Docker全家桶 43 HTTPS详细配置教程 xff0c 主要讲述了使用Docker部署常用工具及反向代理上https 之前预告过还写一篇辅种教程合集的 xff0c 故有了此篇教程 xff
  • Android&Kotlin——EditText遇到类型不匹配错误

    前言 最近一直使用Kotlin开发Android应用 xff0c 今天刚好遇到一个关于EditText的错误 xff0c 记录一下 报错详情 Type mismatch inferred type is String but Editabl
  • PT教程之手动为IYUU站点增加流控步骤

    1 进入容器 使用ssh登陆你的机器 xff0c 输入下面的命令进入iyuu容器 xff0c 如果本地安装的话不需要这个步骤 docker span class token builtin class name exec span it i
  • Linux系统如何禁用IPv6以解决连接超时问题

    Linux系统如何禁用IPv6以解决连接超时问题 文章来源 xff1a https www yingsoo com news servers 55619 html IPv6和IPv4同属于网络协议 xff0c 在Linux系统中 xff0c
  • C语言中的左移位和右移位

    移位操作只是简单地把一个值的位向左或右进行移动 1 左移位 符号 xff1a lt lt 在左移位中 xff0c 之最左边的几位被丢弃 xff0c 右边多出来的几个空位则由0进行补齐 例如 xff1a 01101101 lt lt 3 结果
  • uva10369 - Arctic Network(北极网络)

    最小生成树的变形 最小生成树只能有n 1条边 所以我们有无线资源的时候 xff0c 为了尽量发挥这些昂贵资源的价值 xff0c 我们把这些资源用到最小生成树的最长的s个边上 即 xff0c 求最小生成树的第p s个边 include lt
  • 解决办法:/usr/bin/env: “bash\r“: 没有那个文件或目录

    最近在github上download了一个程序但是总是有点问题 解决办法 xff1a 1 使用VIM打开该文件 按一下ESC 输入 span class token operator span set ff 千万别少了 span class
  • Windows 10 安装并迁移 Ubuntu18.04

    控制面板 程序 程序和功能 启用或关闭windows功能 xff0c 勾选适用于Linux的windows子系统 进入win10应用商店 xff0c 安装并启动 修改成阿里云的软件源 sudo mv etc apt sources list
  • Oracle 12c修改sys用户密码

    oracle12c修改用户密码有个跟之前版本的Oracle数据库修改密码有个差异的地方 这里有个概念叫做插件式数据库 xff08 pluggable database xff09 除了默认的数据库之外 xff0c 其他的都是插件式的 xff
  • linux上的squid的安装及配置

    一 squid简介 Squid是一个缓存Internet 数据的软件 xff0c 其接收用户的下载申请 xff0c 并自动处理所下载的数据 当一个用户想要下载一个主页时 xff0c 可以向Squid 发出一个申请 xff0c 要Squid
  • Apache 中文乱码问题解决方法

    已经不记得解决过多少次这个问题了 xff0c 但是每次都搞忘记 xff0c 备忘一下 服务器端 xff1a 61 61 61 61 61 61 修改httpd conf 在Redhat中放置的位置为 etc httpd conf 查找 xf
  • linux下查看日志用到的常用命令

    linux下查看日志用到的常用命令 参考网址 https mp weixin qq com s NDXSXRhIWkE8fkYSDwcwXw 1 查看日志常用命令 tail n 是显示行号 xff1b 相当于nl命令 xff1b 例子如下
  • Python笔记—TypeError: can only concatenate str (not “int“) to str

    今天自学Python遇到了一个报错 xff0c 报错的内容如下 xff1a TypeError can only concatenate str not 34 int 34 to str 这个错误的意思是类型错误 xff1a 字符串只能拼接
  • Python3中通过Zmail库发送电子邮件

    一 Zmail 是什么 Zmail或许是最简单的邮件收发库 xff0c 开发网址为 xff1a https github com ZYunH zmail GITHUB中的Zmail 在上述github下载压缩包 zmail master z