美文网首页officePython
Python使用yagmail库发送邮件

Python使用yagmail库发送邮件

作者: 刘小白DOER | 来源:发表于2021-07-19 21:04 被阅读0次

        接着上一篇文章,可用将监控信息发送给邮件中来实现一些告警监控。这一篇文章就来实践开源库yagmail库。

        先来个简单的测试。笔者使用的是163邮箱来发送邮件,注意需要进入邮箱开启SMTP服务,然后得到一个授权码,用于登录第三方邮件客户端的专用密码。那么 password替换为授权码即可。官网上有库的详细说明yagmail · PyPI 。

    #导入发送邮件API

    import yagmail

    #链接邮箱服务器

    yag = yagmail.SMTP(user="****@163.com", password="****", host='smtp.163.com')

    #添加邮件标题

    subject = "这是一个测试邮件"

    # 邮箱正文

    contents = '测试邮件内容'

    #添加发送人

    email_name = ['****@qq.com','****@163.com']

    # 发送邮件

    yag.send(email_name, subject, contents)

    #关闭链接 

    yag.close()

            如果调试时出现错误,一般就是三个方面的问题:安装yagmail库,smtp服务没开启,邮箱授权码要写对。

        但是笔者在上一篇文章-Python使用psutil库监控服务器 的程序中发送邮件时一直存在告警,开始以为是库安装问题,切换root用户安装还是存在问题。有问题代码如下:

        花费时间找了一圈才解决两个问题。

        1、port=25

        指定端口25时会发送失败,查看site-packages下的源码才知道端口号邮件不是25了。

        2、encode('utf-8')

        encode转码返回的是bytes类型的数据,而不是要求的str类型,直接删除即可。

        其他使用方法。

       1、 查看yagmail库的github使用说明,yagmail库可以指定链接以及加载图片,比如

        yag.send(to=to,subject=subject,contents=[body,html,img])

        2、还可以增加附件,比如

         yag.send(to=recipients,subject=email_subject,contents=contents,attachments=       ['path/to/attachment1.png','path/to/attachment2.pdf'])

        3、同时,直接在代码里写明文的密码显然是不安全的,推荐使用 keyring。如果你是虚拟环境使用keyring的话,pypi官网上有信息配置资料。

    4、使用上下文管理器进一步优化关闭链接的逻辑

    相关文章

      网友评论

        本文标题:Python使用yagmail库发送邮件

        本文链接:https://www.haomeiwen.com/subject/mcwhmltx.html