Python使用Zmail超简单收发邮件


作者:Harkerbest

声明:本文章为原创文章,本文章永久链接:https://www.harkerbest.cn/?p=522,转载请注明原文地址,盗版必究!!!


  你是否还在为Python自带的smtplib繁琐的语法而感到苦恼?那不妨试试Zmail吧,Zmail堪称Python史上最方便快捷的邮件收发库,使用它最短只需要一行代码就可以实现邮件发送功能!下面让我们来看看Zmail的语法。

安装

  安装方法很简单,使用pip安装即可。在命令提示符CMD输入如下命令并回车执行即可完成安装。

pip install zmail

快速开始

  参照官方文档,这里先给出Zmail的快速使用方法:

#初始化
import zmail
server = zmail.server('发送邮箱地址yourmail@example.com', '发送邮箱密码yourpassword')

#发送邮件
server.send_mail('接收邮箱地址yourfriend@example.com',{'subject':'发送邮件标题','content_text':'发送邮件内容'})
#群发邮件
server.send_mail(['friend1@example.com','friend2@example.com'],{'subject':'Hello!','content_text':'By zmail.'})

#接收邮件
latest_mail = server.get_latest()
zmail.show(latest_mail)

具体语法介绍

  相信看完示例代码之后大家已经体验到Zmail语法的简洁程度,下面给大家详细介绍Zmail的具体语法。

1.验证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,否则将返回False。

2.发送邮件

import zmail
mail = {
    'subject': 'Success!',  # 你想要发送的邮件的标题
    'content_text': 'This message from zmail!', #你想要发送的邮件的内容
    'from':'Boss <mymail@foo.com>',  # 发送人的名称(可选参数)
    'attachments': ['/Users/zyh/Documents/example.zip','/root/1.jpg'],  # 发送的附件(可选参数)
}

server = zmail.server('发送邮箱地址yourmail@example.com', '发送邮箱密码yourpassword')

#发送单个邮件
server.send_mail('yourfriend@example.com', mail) 

#群发邮件
server.send_mail(['yourfriend@example.com','12345@example.com'], mail)

#群发邮件并为某个邮件单独设置发送人名称
server.send_mail([('发送人名称','yourfriend@example.com'),'12345@example.com'], mail) 

#抄送邮件
server.send_mail(['单独发送的邮箱foo@163.com','单独发送的邮箱2 foo@126.com'],mail,cc=[('发件人名字','抄送邮箱bar@163.com'),'抄送邮箱2'])

3.发送HTML邮件

  发送HTML邮件有两种方法:

方法一(将HTML写在代码内)

# 初始化内容同上文一样
mail = {
    'subject': 'Success!',  # 发送邮件标题
    'content_html': ['HTML代码'], 
# 发送的HTML代码
}
server.send_mail('yourfriend@example.com',mail)

方法二(从文件中读取HTML代码)

# 初始化内容同上文一样

# 读取HTML文件
with open('/Users/example.html','r') as f:
    content_html = f.read()
mail = {
    'subject': 'Success!',  # 发送邮件标题
    'content_html': content_html, 
}
server.send_mail('yourfriend@example.com',mail)

4.自定义SMTP配置

  如果Zmail不能自动登陆服务器,可以自定义SMTP服务器配置

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)

5.接收邮件

import zmail
# 初始化
server = zmail.server('ourmail@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')

# 查找邮件并列出前10的邮件列表
mail = server.get_mails(subject='GitHub',start_time='2018-1-1',sender='github',start_index=1,end_index=10)

6.获取邮件信息

# 获取邮箱信息,返回元组(邮件数目,邮箱大小)
mailbox_info = server.stat()

# Zmail中每一个邮件对应一个字典,通过如下方法获取邮件内容
subject = mail['subject']

# 显示邮件基础信息
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)

提醒

  发送或接收邮箱的密码不一定为邮箱账号密码,部分邮箱(如新浪、QQ邮箱等)需要单独设置SMTP密码

结尾

  以上关于Zmail的具体使用方法就到这里了,几乎所有关于Zmail的用法都已经被本文所提及,部分地方可能内容不够详细,但是相信聪明的各位读者摸索一下就能找到答案。大家也可以访问Zmail项目主页:https://github.com/zhangyunhao116/zmail获取更多内容。

  希望大家多多支持本站~谢啦!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...