Aiosmtplib is an implementation of the python stdlib smtplib using asyncio, for use in asynchronous applications.
Basic usage:
import asyncio
import aiosmtplib
loop = asyncio.get_event_loop()
smtp = aiosmtplib.SMTP(hostname='localhost', port=1025, loop=loop)
loop.run_until_complete(smtp.connect())
async def send_a_message():
sender = 'root@localhost'
recipient = 'somebody@localhost'
message = "Hello World"
await smtp.sendmail(sender, [recipient], message)
loop.run_until_complete(send_a_message())
Initialize a new aiosmtplib.SMTP
instance, then run its connect
coroutine. Unlike the standard smtplib, initializing an instance does not
automatically connect to the server.
Use SMTP.sendmail
to send raw messages. Allowed arguments are:
sender
- The address sending this mail.
recipients
- A list of addresses to send this mail to. A bare string will be treated as a list with 1 address.
message
- The message string to send.
mail_options
- List of options (such as ESMTP 8bitmime) for the mail command.
rcpt_options
- List of options (such as DSN commands) for all the rcpt commands.
Use SMTP.send_message
to send email.message.Message
objects.
Simply use SMTP_SSL
or use SMTP
with ssl
option set to True
.
Async context manager will ensure the connection is established before the block and it is quited after the block.
import asyncio
import aiosmtplib
loop = asyncio.get_event_loop()
async def send_a_message():
sender = 'root@localhost'
recipient = 'somebody@localhost'
message = "Hello World"
async with aiosmtplib.SMTP(hostname='localhost', port=1025, loop=loop) as smtp:
await smtp.sendmail(sender, [recipient], message)
loop.run_until_complete(send_a_message())