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 ))

python 异步发送邮件 aiosmtplib的更多相关文章

  1. celery异步发送邮件

    利用Django框架发送邮件的详细过程,在前两天的博客中有所记录,但是单纯的那样发邮件是有非常大的问题的,这就需要celery异步发送来解决 首先我们来看一下邮件发送的过程: Django网站先发送到 ...

  2. Python异步IO --- 轻松管理10k+并发连接

    前言   异步操作在计算机软硬件体系中是一个普遍概念,根源在于参与协作的各实体处理速度上有明显差异.软件开发中遇到的多数情况是CPU与IO的速度不匹配,所以异步IO存在于各种编程框架中,客户端比如浏览 ...

  3. C# 利用SMTP异步发送邮件

    C#实现收发邮件功能需要用到两个命名空间  System.Net; 和 System.Net.Mail; SmtpClient client = new SmtpClient("smtp.g ...

  4. 深入理解 Python 异步编程(上)

    http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知 ...

  5. python异步加协程获取比特币市场信息

    目标 选取几个比特币交易量大的几个交易平台,查看对应的API,获取该市场下货币对的ticker和depth信息.我们从网站上选取4个交易平台:bitfinex.okex.binance.gdax.对应 ...

  6. flask 异步发送邮件

    异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应.因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环, ...

  7. python大法好——Python SMTP发送邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  8. Python——SMTP发送邮件

    一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...

  9. 深入理解Python异步编程(上)

    本文代码整理自:深入理解Python异步编程(上) 参考:A Web Crawler With asyncio Coroutines 一.同步阻塞方式 import socket def blocki ...

随机推荐

  1. 图片转成Base64

    var img = "imgurl";//imgurl 就是你的图片路径 function getBase64Image(img) { var canvas = document. ...

  2. javascript事件流机制

    (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div ...

  3. Linux c codeblock的使用(四):创建自己的静态函数库

    从我之前的博文当中,大家应该大概了解了linux下的函数库究竟是一个什么样的东西.linux下的函数库其实就像windows中的dll文件,里面包含了程序运行所需要的函数. 其实无论是我们使用linu ...

  4. WPF listbox实现多列显示数据

    一.每行显示固定列数 <ListBox ItemsSource="{Binding DataList}" Style="{DynamicResource ListB ...

  5. JS-4-if

    流程控制结构1 顺序结构 alert(10); alert(20);2 分支结构(选择结构) * IF 2.1  if(条件) { 条件成立时执行的语句 } else { 条件不成立时执行的语句 } ...

  6. Loadrunner录制https脚本

        随着公司的发展,公司原有的SVN服务器存放的内容不断增加,容量已经不能满足后续需求,首先我们想到对服务器进行扩容,然而因为各种原因服务器不能进行扩容,所以公司决定更换新的SVN服务器,在做数据 ...

  7. 面向对象编程思想(OOP)

    本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞 ...

  8. 【webpack学习笔记】a01-基础构建

    webpack基于nodejs环境运行,首先确认已经安装了node.js. 基础构建流程 新建一个文件夹,这个就是你项目的根目录. 在命令行中使用npm init命令初始化npm,会得到一个 ==pa ...

  9. R语言数值积分

    前两天对学习了R里面计算的基本范围,以及一些求解方程的方法,今天来看看积分,其实上个学期学了数值分析,对这部分的算法是有所了解的,当时是用matlab写了一遍,已经忘了怎么实现的了,现在用R重新写一遍 ...

  10. grep用法

    正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:在以前上班 ...