aiosmtplib is an asynchronous SMTP client for use with asyncio.文檔地址
與 smtplib的用法大致相同html
for examplepython
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 ))