• python 异步发送邮件 aiosmtplib


    aiosmtplib is an asynchronous SMTP client for use with asyncio.文档地址
    与 smtplib的用法大体相同

    有几个地方需要注意下:

    • 加密SMTP 有两种
    1. 支持tls/ssl 扩展, 一般端口是587,比如gmail, 这是在普通连接上在进行扩展的.需要在SMTP实例化时传参 use_tls=False,然后再smtp.starttls()
    2. 支持直接连接tls/ssl的,一般端口是465,操作简单, 直接在 SMTP()实例化中 传入 use_tls=True
    • 试了下,大部分smtp服务器需要登录才能发送邮件,不然会报 authenticate的错
    • 少部分smtp服务器需要授权码,特别是企业邮箱,vip邮箱之类的. 等需要时再说
    • 常见邮箱服务器地址

    for example

    import asyncio
    from email.mime.text import MIMEText
    from email.utils import parseaddr, formataddr
    from email.header import Header
    import aiosmtplib
    import logging
    
    def _format_addr(s): #格式化地址 也方便发送中文
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))
    
    
    from_addr = ''
    password = ''
    to_addr = ''
    
    
    async def sendemail(to_addr ):
        title = '<html><body><h3>亲爱的<a data-auto-link="1" href="mailto:%s" target="_blank">%s</a>,您好:</h3>'%(to_addr,to_addr)
        reset = "<div style = 'padding-left:55px;padding-right:55px;font-family:'微软雅黑','黑体',arial;font-size:14px;'>重置密码</div>"
        body = '<p>请点击以下链接进行重置密码 <a href="%s">%s</a></p>'%(link,reset)
        tail = '如果您并不是Awesome用户,可能是其他用户误输入了您的邮箱地址。</body></html>'
        html = title+body+tail
    
        msg = MIMEText(html, 'html', 'utf-8')
        msg['From'] = _format_addr('Awesome Python Webapp <%s>' % from_addr)
        msg['To'] = _format_addr('亲爱的用户 <%s>' % to_addr)
        msg['Subject'] = Header('重置密码', 'utf-8').encode()
    
       try:
            async with aiosmtplib.SMTP(hostname=smtp_server, port=465,use_tls=True) as smtp:
                await smtp.login(from_addr,password)
                await smtp.send_message(msg)
        except aiosmtplib.SMTPException as e:
            logging.error('sendemail:%s'%e)
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        loop.run_until_complete(sendemail(to_addr ))
    
  • 相关阅读:
    day13
    day11作业
    day12
    小结2
    iOS-常见问题
    iOS-ASIHTTPRequest缓存机制
    iOS-文件断点续传
    iOS-Http : GET : POST
    iOS-通信录
    iOS-汉字排序
  • 原文地址:https://www.cnblogs.com/ShawSpring/p/10699771.html
Copyright © 2020-2023  润新知