当前位置 博文首页 > python Zmail模块简介与使用示例

    python Zmail模块简介与使用示例

    作者:德辰 时间:2021-02-19 21:07

    介绍

    Zmail 使得在python3中发送和接受邮件变得更简单。你不需要手动添加服务器地址、端口以及适合的协议,zmail会帮你完成。此外,使用一个python字典来代表邮件内容也更符合直觉

    安装

    Zmail仅支持python3,不需要任何外部依赖. 不支持python2.

    pip3 install zmail

    特性 

    • 自动寻找服务器地址以及端口
    • 自动使用可靠的链接协议
    • 自动将一个python字典映射成MIME对象(带有附件的)
    • 自动添加头文件以及localhostname来避免服务器拒收你的邮件
    • 轻松自定义你的头文件
    • 支持使用HTML作为邮件内容
    • 仅需python>=3.5,你可以将其嵌入你的项目而无需其他的依赖

    使用须知

    使用它之前,请保证

    • 使用Python3
    • 确保打开了邮箱的POP3和SMTP功能 (对于 @163.com 和 @gmail.com 你需要设置你的应用专用密码)

    然后,剩下你需要做的就是import zmail即可

    使用示例

    发送你的邮件

    import zmail
    
    # 你的邮件内容
    mail_content = {
     "subject":"success!", # 邮件主题
     "content_text":"This message from zmail", # 邮件内容
     "attachments":r"D:\test.docx", # 邮件附件
    }
    
    # 使用你的邮件账户名和密码登录服务器
    server = zmail.server("XXXXXX@163.com", "XXXXXX")
    
    # 发送邮件
    server.send_mail('yourfriend@example.com', mail_content)

    给多个信箱发件,修改发送邮件 即可,其他内容同上

    # 发送邮件
    
    server.send_mail(['555555@qq.com','666666@qq.com'],mail_content)

    发送HTML作为邮件内容

    mail = {
     'subject': 'Success!', # 邮件主题
     'content_html': ['HTML CONTENT'], # HTML格式的邮件内容 
     'attachments': '/Users/zyh/Documents/example.zip', # 邮件附件
    }
    server.send_mail('yourfriend@example.com',mail)

    或者

    with open('/Users/example.html','r') as f:
     content_html = f.read()
    mail = {
     'subject': 'Success!', 
     'content_html': content_html, 
     'attachments': '/Users/zyh/Documents/example.zip', 
    }
    server.send_mail('yourfriend@example.com',mail)
    • 自定义你的server

    如果zmail不能正常工作,你可以自定义server的配置

    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)
    • 依据 (subject,after,before,sender)取回一个列表的邮件
    mail = server.get_mails(subject='163',after='2018-1-1',sender='github')

    示例中, 如果 '163' 在邮件的主题中,这封邮件将会被匹配, 例如' [163] Your password has changed'

    邮件的结构

    • content-type: 邮件内容的类型
    • subject: 邮件主题
    • to:收件人
    • from:寄件人
    • date: 年-月-日 时间 时区
    • boundary: 如果邮件为multiple - - - parts,你可以得到其分界线
    • content: 邮件的文本内容(仅在text/plain时可以被解析)
    • contents: 邮件的body,里面包含着由分界线分割的每一个段落
    • attachments: None 或者 [['附件名称;编码方式','附件的二进制内容']...]
    • id: 在邮箱中的id

    项目地址: 

    GitHub:https://github.com/ZYunH/zmail 

    js
    下一篇:没有了