简介

python发邮件之前用的是smtplib,代码太过于复杂,学习成本大,并且很多人学不会。之前专门写过一篇https://www.cnblogs.com/yoyoketang/p/7277259.html,无奈还是一大堆人发送邮件失败。

今天介绍一个最简单,最强大的发邮件的包zmail,简单好上手,妈妈再也不用担心我不会发邮件了!

github原文地址https://github.com/ZYunH/zmail

zmail简介

Zmail允许您在python中尽可能发送和接收电子邮件。无需检查服务器地址或制作您自己的MIME对象。使用zmail,您只需要关心您的邮件内容。

Zmail只在python3中运行,不需要第三方模块。不支持python2

pip3 install zmail

特征:

  • 自动查找服务器地址及其端口。
  • 自动使用合适的协议登录。
  • 自动将python字典转换为MIME对象(带附件)。
  • 自动添加邮件标题和本地名称,以避免服务器拒绝您的邮件。
  • 轻松自定义邮件标题。
  • 支持HTML作为邮件内容。
  • 只需要python> = 3.5,您可以将其嵌入到项目中而无需其他模块。

在使用之前,请确保:

  • 使用python3
  • 在您的邮件中打开SMTP / POP3功能(对于@ 163.com和@ gmail.com,您需要设置您的应用程序私人密码)

    然后,您只需要导入zmail即可

快速开始

import zmail
server = zmail.server('yourmail@example.com', 'yourpassword') # Send mail
server.send_mail('yourfriend@example.com',{'subject':'Hello!','content_text':'By zmail.'})
# Or to a list of friends.
server.send_mail(['friend1@example.com','friend2@example.com'],{'subject':'Hello!','content_text':'By zmail.'}) # Retrieve mail
latest_mail = server.get_latest()
zmail.show(latest_mail)

案例

验证SMTP和POP功能是否正常工作

import zmail
server = zmail.server('yourmail@example.com’, 'yourpassword') if server.smtp_able():
pass
# SMTP function.
if server.pop_able():
pass
# POP function.

如果SMTP和POP工作正常,该函数将返回True,否则返回Fasle。

发送邮件

import zmail
mail = {
'subject': 'Success!', # Anything you want.
'content_text': 'This message from zmail!', # Anything you want.
'attachments': ['/Users/zyh/Documents/example.zip','/root/1.jpg'], # Absolute path will be better.
} server = zmail.server('yourmail@example.com', 'yourpassword') server.send_mail('yourfriend@example.com', mail)

您可以通过添加 'from':'Boss <mymail@foo.com>' 邮件来定义发件人的姓名。

收件人列表

server.send_mail([ ' yourfriend@example.com ',' 12345 @ example.com ' ],mail)

你也可以命名它们(使用元组,首先是它的名字,下一个是它的地址)

server.send_mail([('Boss','yourfriend@example.com'),'12345@example.com'], mail)

发送HTML内容

mail = {
'subject': 'Success!', # Anything you want.
'content_html': ['HTML CONTENT'],
'attachments': '/Users/zyh/Documents/example.zip', # Absolute path will be better.
}
server.send_mail('yourfriend@example.com',mail)

或者

with open('/Users/example.html','r') as f:
content_html = f.read()
mail = {
'subject': 'Success!', # Anything you want.
'content_html': content_html,
'attachments': '/Users/zyh/Documents/example.zip', # Absolute path will be better.
}
server.send_mail('yourfriend@example.com',mail)

使用抄送

server.send_mail(['foo@163.com','foo@126.com'],mail,cc=['bar@163.com'])

同样,你也可以命名它们(使用元组,首先是它的名字,下一个是它的地址)

server.send_mail(['foo@163.com','foo@126.com'],mail,cc=[('Boss','bar@163.com'),'bar@126.com'])

自定义您的服务器

server = zmail.server('username','password',smtp_host='smtp.163.com',smtp_port=994,smtp_ssl=True,pop_host='pop.163.com',pop_port=995,pop_tls=True)

收到你的邮件

获取最新邮件

import zmail
server = zmail.server('yourmail@example.com‘, 'yourpassword')
mail = server.get_latest()

通过其ID检索邮件。

mail = server.get_mail(2)

获取邮件列表(主题,之后,之前,发件人)

mail = server.get_mails(subject='GitHub',start_time='2018-1-1',sender='github')

在示例中,如果'GitHub'在邮件的主题中,它将被匹配,例如'[GitHub]您的密码已更改'

发件人是一样的。

您还可以指定邮件范围。

mail = server.get_mails(subject='GitHub',start_time='2018-1-1',sender='github',start_index=1,end_index=10)

获取邮箱信息。

mailbox_info = server.stat()

结果是2个整数的元组:(message count, mailbox size)。

解析你的邮件

在zmail中,所有邮件都将映射到python字典,您可以通过访问您的邮件

subject = mail['subject']

显示邮件,使用zmail.show()

import zmail
server = zmail.server('yourmail@example.com', 'yourpassword')
mail = server.get_latest()
zmail.show(mail)

查看邮件中的所有内容。

import zmail
server = zmail.server('yourmail@example.com', 'yourpassword')
mail = server.get_latest()
for k,v in mail.items():
print(k,v)

github原文地址https://github.com/ZYunH/zmail

python笔记37-史上最好用的发邮件zmail的更多相关文章

  1. HCNP学习笔记之史上最全华为路由器交换机配置命令大合集

    先来一张思科和华为命令的对照表: 史上最全华为路由器交换机配置命令大合集,熟练掌握下面的华为路由器交换机配置知识点,你只需花几分钟的时间就能明白华为路由器交换机配置.交换机的配置命令等等. 华为路由器 ...

  2. Python 实现网页截屏、查库、发邮件

    本文介绍了使用 Python(2.7版本)实现网页截屏.查库.发邮件的 demo.用到了 selenium.phantomjs.mailer.jinja2.mysqldb 还有 image,都是比较典 ...

  3. Python 爬取1688货源重量,自动发邮件到指定邮箱(qq),设置定时运行程序

    1 # -*- coding: utf-8 -*- 2 # @Time : 2020/7/6 13:46 3 # @Author : Chunfang 4 # @Email : 3470959534@ ...

  4. python 检测nginx状态,若无法访问发邮件通知

    应用场景:用来检测网站可用性,访问失败,则发邮件通知 #!/usr/bin/env python import urllib2,time,smtplib,string,logging from con ...

  5. python学习教程,史上最全面的python学习路线图

    Python 是Web 开发.游戏脚本.计算机视觉.物联网管理和机器人开发的主流语言之一,随着Python用户可以预期的增长,它还有机会在多个领域里登顶.Python学习路线分享给你. 阶段一是Pyt ...

  6. python try 异常处理 史上最全

    在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止. 为了处理异常,我们使用try ...

  7. 23种计模式之Python实现(史上最全最通俗易懂)内容整改中

    第一篇 Python与设计模式:前言 第二篇(23种设计模式) 创建类设计模式(5种) 单例模式.工厂模式.简单工厂模式.抽象工厂模式.建造者模式.原型模式 结构类设计模式(7种) 代理模式.装饰器模 ...

  8. python笔记05

    python笔记05 数据类型 上个笔记知识点总结: 列表中extend特性:extend,(内部循环,将另外一个列表,字符串.元组添加到extend前的列表中) li.extend(s),将s中元素 ...

  9. python笔记06

    python笔记06 数据类型 上个笔记内容补充 补充 列表 reverse,反转. v1 = [1,2,3111,32,13] print(v1) v1.reverse() print(v1) v1 ...

随机推荐

  1. java学习摘抄笔记mybaits1

    mybatis 第一天 mybatis的基础知识 课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发) ...

  2. [PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感

    要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集. MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到. MySQL co ...

  3. IntelliJ IDEA(2018.3.5) 设置编码为utf-8编码

    位置一: File->Settings->Editor->File Encodings   位置二: File->Other Settings->Default Sett ...

  4. EF的 NoTracking 的一些记录

    NoTracking官方解释 跟踪与非跟踪查询 跟踪行为可控制 Entity Framework Core 是否将有关实体实例的信息保留在其更改跟踪器中. 如果已跟踪某个实体,则该实体中检测到的任何更 ...

  5. Sublime Text3 搭建前端开发环境

    第一步:百度搜索sublime text3 ,直接点击红色箭头下方的下载地址,下载完成安装后会提示是否更新,直接点击更新就好了! 第二步:下载插件管理器,点击菜单栏Tools->Package ...

  6. 使用Mysql中的concat函数或正则匹配来快速批量生成用于执行的sql语句

    背景介绍 今天需要给一张表里面补数据,需要按照行的维度进行update,如果是个别数据那么直接写update语句就可以了,但是场景要求的是将整表的数据进行update,要实现这个需求就不能只靠蛮力了, ...

  7. 推荐系统中的协同滤波算法___使用SVD

    对于推荐方法,基于内容 和 基于协同过滤 是目前的主流推荐算法,很多电子商务网站的推荐系统都是基于这两种算法的. 协同过滤 是一种基于相似性来进行推荐的算法,主要分为 基于用户的协同过滤算法 和 基于 ...

  8. fineui 实现下拉框模糊查询

    官网下拉框模糊查询只能实现首字母模糊匹配,如果实现类似这样的 like '%'+关键字+'%',却没有. 今天群里的没想好同学分享了,前后模糊匹配代码.   代码示例: <body>   ...

  9. [转帖]Linux超级用户root口令忘记怎么办?

    Linux超级用户root口令忘记怎么办? 2010-05-10 12:15:00 monkey_d_meng 阅读数 5535  收藏 更多 分类专栏: Linux   版权声明:本文为博主原创文章 ...

  10. linux安装 uwsgi 测试 test.py 不显示hello world 的解决办法

    一般部署项目到服务器,会安装uwsgi,但是很多教程在安装它的时候会让你测试一下安装好了没,于是就有很多像我一样懵逼的少年掉进一个坑里出不来,很久.很久... 那就是最后浏览器输入ip:8000端口后 ...