Package: apistar-mail
apistar-mailProvides a simple interface to set up SMTP with yourAPIStarapplication and send messages from your view functions. Please note this work derives largely from theFlask-Mailextension by 'Dan Jacob' and contributors, but has been modified extensively to remove Python 2 support and be used as an APIStar component.Installation$  pip install apistar-mailUsageExample SetupTo send mail messages from your view functions you must include a dictionary of mail options to theMailComponent. Here we have a minimally viable app capable of sending an email message and returning a 204 response code:fromapistarimportApp,Routefromapistar.httpimportResponsefromapistar_mailimportMailComponent,Mail,Messagemail_options={'MAIL_SERVER':'smtp.example.com','MAIL_USERNAME':'me@example.com','MAIL_PASSWORD':'dontcommitthistoversioncontrol','MAIL_PORT':587,'MAIL_USE_TLS':True,'MAIL_DEFAULT_SENDER':'me@example.com'}defsend_a_message(mail:Mail):msg=Message(subject='Hello',body='Welcome to APIStar!',recipients=['you@example.com'])mail.send(msg)returnResponse('',204)routes=[Route('/','POST',send_a_message)]components=[MailComponent(**mail_options)]app=App(routes=routes,components=components)if__name__=='__main__':app.serve('127.0.0.1',5000,debug=True)Sending MessagesTo send a message ,first include the Mail component for injection into your view. Then create an instance of Message, and pass it to your Mail component usingmail.send(msg)fromapistar_mailimportMail,Messagedefsend_a_message(mail:Mail):msg=Message('Hello',sender='drew@example.com',recipients=['you@example.com'])mail.send(msg)returnYour message recipients can be set in bulk or individually:msg.recipients=['you@example.com','me@example.com']msg.add_recipient('otherperson@example.com')If you have setMAIL_DEFAULT_SENDERyou don’t need to set the message sender explicitly, as it will use this configuration value by default:msg=Message('Hello',recipients=['you@example.com'])The sender can also be passed as a two element tuple containing a name and email address which will be split like so:msg=Message('Hello',sender=('Me','me@example.com'))assertmsg.sender=='Me <me@example.com>'A Message can contain a body and/or HTML:msg.body='message body'msg.html='<b>Hello apistar_mail!</b>'Configuration Optionsapistar-mail is configured through the inclusion of theMAILdictionary in your apistar settings. These are the available options:'MAIL_SERVER': default 'localhost''MAIL_USERNAME': default None'MAIL_PASSWORD': default None'MAIL_PORT': default 25'MAIL_USE_TLS': default False'MAIL_USE_SSL': default False'MAIL_DEFAULT_SENDER': default None'MAIL_DEBUG': default False'MAIL_MAX_EMAILS': default None'MAIL_SUPPRESS_SEND': default False'MAIL_ASCII_ATTACHMENTS': FalseTestingTo run the test suite with coverage first install the package in editable mode with it's testing requirements:$ pip install -e ".[testing]"To run the project's tests$ pytest --covTo run tests against multiple python interpreters use:$ toxHISTORY0.3.0 Added support for APIStar version >= 0.4.00.2.1 Pinned APIStar requirement to 0.3.9APIStar 0.4.0 introduced breaking changes to the framework. Since Components have completely changed we are pinning the requirement for this release.