python笔记38-使用zmail发各种邮件案例代码

前言

本篇介绍使用zmail发各种格式的邮件,并运行成功的代码,小伙伴们只需更换自己的邮箱就可以运行起来了

content_text发送纯文本

先从最简单的发送纯文本的邮件开始,调通发送邮件的代码。
以腾讯的企业邮箱为例,smtp_host是发送邮箱的smtp服务地址,不同的邮箱不太一样。

  • smtp_host:smtp.exmail.qq.com
  • smtp_port:465
import zmail

'''
作者:上海-悠悠
QQ交流群:717225969
'''
mail = {
    'subject': '邮件主题:Success!',  # Anything you want.
    'content_text': '邮件正文内容:This message from zmail! QQ交流群:717225969 ',  # Anything you want.
}

server = zmail.server('yourname@xxxx.com',
                      'yourpassword',
                      smtp_host="smtp.exmail.qq.com",
                      smtp_port=465)
server.send_mail('2833404xx@qq.com', mail)  # 接收着

从上面代码看出,发送邮件的代码也就2句,我们只需关注三个参数

  • mail 发件的内容,包含主题、正文、附件等
  • server 发送邮件人的相关信息,如账号,密码,smtp_host, smtp_port
  • receiver 接收者的邮箱地址

content_html发送html正文

如果发送的正文是html格式的,那就用content_html参数,注意content_text和content_html只能二选一
平常生成的html测试报告,需要发送到邮箱,可以用open函数去读取html正文内容

import zmail

'''
作者:上海-悠悠
QQ交流群:717225969
'''

# html报告地址D:\\aaaa\\result.html

with open('D:\\aaaa\\result.html', 'r', encoding="utf-8") as f:
    content_html = f.read()

mail = {
    'subject': '邮件主题:Success!',  # Anything you want.
    # 'content_text': '邮件正文内容:This message from zmail! QQ交流群:717225969 ',  # Anything you want.
    'content_html': content_html
}

server = zmail.server('yourname@xxxx.com',
                      'yourpassword',
                      smtp_host="smtp.exmail.qq.com",
                      smtp_port=465)
server.send_mail('283340479@qq.com', mail)

也可以自己写html正文内容

content_html = '''
<h1>这是一级标题</h1>
<h2>这是二级标题</h2>
<h3>这是三级标题</h3>
<p>这段是有个段落,可以写很多你要写的内容</p>
<a href="https://www.cnblogs.com/yoyoketang/">点我,可以跳转到我的博客</a>
'''

mail = {
    'subject': '邮件主题:Success!',  # Anything you want.
    # 'content_text': '邮件正文内容:This message from zmail! QQ交流群:717225969 ',  # Anything you want.
    'content_html': content_html,
    'attachments': ['/Users/zyh/Documents/example.zip','/root/1.jpg'],  # Absolute path will be better.
}

attachments带附件

把report.html的报告同时放到附件去发送,使用attachments参数,只需传附件的绝对路径就可以了.
传多个附件,放到list里

import zmail

# html报告地址D:\\aaaa\\result.html
with open('D:\\aaaa\\result.html', 'r', encoding="utf-8") as f:
    content_html = f.read()


mail = {
    'subject': '邮件主题:Success!',  # Anything you want.
    # 'content_text': '邮件正文内容:This message from zmail! QQ交流群:717225969 ',  # Anything you want.
    'content_html': content_html,
    'attachments': ['D:\\aaaa\\result.html','D:\\122.png'],  # Absolute path will be better.
}

server = zmail.server('yourname@xxxx.com',
                      'yourpassword',
                      smtp_host="smtp.exmail.qq.com",
                      smtp_port=465)
server.send_mail('2833404xx@qq.com', mail)

正文带图片

正文,如果想发送一个图片,只需知道图片的url地址就可以了,如下个

<img src="https://x.xxx.com/xxx.png" width="650" height="340">'

如果是本地的图片,可以转base64后放到img标签,格式

<img src=“data:image/png;base64,***************************************************"/>

参考代码

content_html='''
<p>这是一张图片</p>
<img src="https://img2018.cnblogs.com/blog/1070438/201906/1070438-20190622235030004-1865146937.png" alt="yoyo png" width="650" height="340">
'''

mail = {
    'subject': '邮件主题:Success!',  # Anything you want.
    # 'content_text': '邮件正文内容:This message from zmail! QQ交流群:717225969 ',  # Anything you want.
    'content_html': content_html,
    'attachments': ['D:\\aaaa\\result.html','D:\\122.png'],  # Absolute path will be better.
}

QQ授权码

如果你的发件邮箱是QQ邮箱,发件人的密码就需要用授权码了,在邮箱设置里面找到授权码
QQ邮箱smtp_host是smtp.qq.com,多个收件人的话,接收者可以用list

server = zmail.server('28yourQQ@qq.com',
                      'QQ邮件授权码',
                      smtp_host="smtp.qq.com",
                      smtp_port=465)
server.send_mail(['2833404xx@qq.com','xx33404xx@qq.com'], mail)

更多资料参考前面这篇:https://www.cnblogs.com/yoyoketang/p/11048495.html

posted @ 2019-06-23 00:05  上海-悠悠  阅读(1540)  评论(1编辑  收藏  举报