aiosmtplib, asyncio smtplib实现

分享于 

4分钟阅读

GitHub

  繁體 雙語
asyncio smtplib implementation
  • 源代码名称:aiosmtplib
  • 源代码网址:http://www.github.com/cole/aiosmtplib
  • aiosmtplib源代码文档
  • aiosmtplib源代码下载
  • Git URL:
    git://www.github.com/cole/aiosmtplib.git
    Git Clone代码到本地:
    git clone http://www.github.com/cole/aiosmtplib
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/cole/aiosmtplib
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    aiosmtplib

    "aiosmtplib TravisCI build status"coveralls"aiosmtplib on the Python Package Index"pypi-python-versionspypi-statuspypi-license

    aiosmtplib是用于asyncio的异步SMTP客户端。

    有关完整文档,请参阅阅读文档文档。

    快速入门

    import asynciofrom email.mime.text import MIMETextimport aiosmtplib
    loop = asyncio.get_event_loop()
    smtp = aiosmtplib.SMTP(hostname='127.0.0.1', port=1025, loop=loop)
    loop.run_until_complete(smtp.connect())
    message = MIMEText('Sent via aiosmtplib')
    message['From'] ='root@localhost'message['To'] ='somebody@example.com'message['Subject'] ='Hello World!'loop.run_until_complete(smtp.send_message(message))

    要求

    需要使用SSL支持编译的python 3.5 +。

    连接到SMTP服务器

    初始化一个新的SMTP 实例,然后等待它的connect 协作器。 初始化实例不会自动连接到服务器,因为这是一个阻塞操作。

    gmail_client = SMTP()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(
     gmail_client.connect(hostname='smtp.gmail.com', port=587))

    发送消息

    SMTP.send_message

    使用 send_message 发送 email.message.Message 对象。

    message = MIMEText('Sent via aiosmtplib')
    message['From'] ='root@localhost'message['To'] ='somebody@example.com'message['Subject'] ='Hello World!'loop = asyncio.get_event_loop()
    loop.run_until_complete(smtp.send_message(message))

    这是最简单的API,是发送消息的推荐方式,因为它使得正确设置标题和处理多部分消息变得容易。 有关创建 email.message.Message 对象的详细信息,请参见文档示例

    SMTP.sendmail

    使用 sendmail 发送原始消息。

    sender ='root@localhost'recipients = ['somebody@example.com']
    message ='''To: somebody@example.comFrom: root@localhostSubject: Hello World!Sent via aiosmtplib'''loop = asyncio.get_event_loop()
    loop.run_until_complete(smtp.sendmail(sender, recipients, message))

    请注意,在使用这里方法时,必须自己设置邮件标题的格式。

    STARTTLS

    许多SMTP服务器在端口 587上支持STARTTLS扩展。 要连接到其中之一,请在连接时将 use_tls 设置为 False,然后在客户端上调用 starttls

    loop = asyncio.get_event_loop()
    smtp = aiosmtplib.SMTP(
     hostname='smtp.gmail.com', port=587, loop=loop, use_tls=False)
    loop.run_until_complete(smtp.connect())
    loop.run_until_complete(smtp.starttls())

    路线图

    现在aiosmtplib已经完成了,但是测试覆盖和文档需要大量的工作。 功能请求和 Bug 报告欢迎通过Github发布。


    IMP  Implementation  async  SMT  SMTP  Smtplib  
    相关文章