python 异步发送邮件 aiosmtplib
aiosmtplib is an asynchronous SMTP client for use with asyncio.文档地址
与 smtplib的用法大体相同
有几个地方需要注意下:
- 加密SMTP 有两种
- 支持tls/ssl 扩展, 一般端口是587,比如gmail, 这是在普通连接上在进行扩展的.需要在SMTP实例化时传参 use_tls=False,然后再smtp.starttls()
- 支持直接连接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的更多相关文章
- celery异步发送邮件
利用Django框架发送邮件的详细过程,在前两天的博客中有所记录,但是单纯的那样发邮件是有非常大的问题的,这就需要celery异步发送来解决 首先我们来看一下邮件发送的过程: Django网站先发送到 ...
- Python异步IO --- 轻松管理10k+并发连接
前言 异步操作在计算机软硬件体系中是一个普遍概念,根源在于参与协作的各实体处理速度上有明显差异.软件开发中遇到的多数情况是CPU与IO的速度不匹配,所以异步IO存在于各种编程框架中,客户端比如浏览 ...
- C# 利用SMTP异步发送邮件
C#实现收发邮件功能需要用到两个命名空间 System.Net; 和 System.Net.Mail; SmtpClient client = new SmtpClient("smtp.g ...
- 深入理解 Python 异步编程(上)
http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知 ...
- python异步加协程获取比特币市场信息
目标 选取几个比特币交易量大的几个交易平台,查看对应的API,获取该市场下货币对的ticker和depth信息.我们从网站上选取4个交易平台:bitfinex.okex.binance.gdax.对应 ...
- flask 异步发送邮件
异步发送邮件 当使用SMTP的方式发送电子邮件时,如果你手动使用浏览器测试程序的注册功能,在提交注册表单后,浏览器会有几秒钟的不响应.因为这时候程序正在发送电子邮件,发信的操作阻断了请求--响应循环, ...
- python大法好——Python SMTP发送邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- Python——SMTP发送邮件
一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...
- 深入理解Python异步编程(上)
本文代码整理自:深入理解Python异步编程(上) 参考:A Web Crawler With asyncio Coroutines 一.同步阻塞方式 import socket def blocki ...
随机推荐
- 老男孩Python九期全栈学习笔记4
---恢复内容开始--- day4 1.作业回顾 1.有变量name = 'aleX leNb',完成如下操作: 1)移除 name 变量对应的值两边的空格,并输出处理结果 2)移除 name 变量左 ...
- 20175212 《Java程序设计》第2周学习总结
学号 20175212 <Java程序设计>第2周学习总结 教材学习内容总结 1.数据类型 此节介绍的数据类型与C中常用的相比仅多了Boolean(逻辑类型).byte(取值范围:[-12 ...
- Tensorflow安装指南
1.关闭所有安全工具!!!!!(非常重要!否则很可能安装失败) 2.下载CUDA 地址https://developer.nvidia.com/accelerated-computing-toolki ...
- FTP软件FileZilla 3.38.1下载
FTP软件FileZilla 3.38.1下载 filezilla软件简介 FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能,具备极好的可控性及条理性 ...
- CSS3绘制特殊图形
- centos7 无界面静默安装 oracle
环境准备 Centos7.3.64 64位 这里使用的是阿里云 ECS主机(1核,2G内存,40G硬盘) Oracle 11g R2 64位安装介质(版本11.2.0.1)下载地址:http:/ ...
- 增强for、iterator迭代器
因为初学java,对部分语法还模棱两可, 在做练习的时候,用增强for遍历字符串编译报错 所以来复习下增强for原理和适用范围 一.增强for概念 增强for(也成为for each循环)是JDK 1 ...
- SQL-59 按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。
题目描述 按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推. 具体结果如下Demo展示..CREATE TABLE `s ...
- SQL-54 查找排除当前最大、最小salary之后的员工的平均工资avg_salary。
题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary.CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,`sala ...
- ISCSI
感谢: https://www.cnblogs.com/wuchanming/p/4019660.html