Package: django-gov-notify
django-gov-notify, a GOV.UK Notify flavoured Django email backenddjango-gov-notify provides Django integration with theGOV.UK Notifyservice for sending emails and SMS messages.Python Client Documentation.This is implemented as a custom Django email backend. It presents a similar internal API to standard Django email backends, but with some restrictions:GOV.UK Notify emails are sent to one recipient each. CC: and BCC: fields are not supported.A single email 'message' with multiple recipients will result in multiple individual API calls to GOV.UK Notify, each message being sent to a single recipient. The backend will still report back1, as per Django's default behaviour.Attachments are not (at the moment) supported.Custom headers are not supported.To configure a 'reply-to' address, you must first configure such an address in the GOV.UK Notify admin interface.The 'from' address field is not supported. This must be configured within the GOV.UK Notify admin interface.Preformatted emails are expected to be configured in the service admin dashboard as Markdown templates with placeholders.The email body is interpreted as very limited Markdown. On testing, it seems that variables are not interpreted as markdown, or maybe mangled, e.g._test_was emailed as*test*.Compatibilitydjango-gov-notify supports:Python 3.8, 3.9, 3.10 and 3.11Django 3.2, 4.1 and 4.2InstallationUsingpip:$pipinstalldjango-gov-notifyUsingPoetry$poetryadddjango-gov-notifyConfigurationIn your Django project's settings:EMAIL_BACKEND="django_gov_notify.backends.NotifyEmailBackend"You will need at least one email template ID, with a plain template:Subject: ((subject))Body: ((body))Set the Django settings:GOVUK_NOTIFY_API_KEY(NBnotGOV_UK…)GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_IDThis plain template ID setting, and template IDs passed to the NotifyEmailMessage class, use string representations of the UUID keys.UsageSending an email using a templateConfigure the template in theGOV.UK Notify dashboard:Subject: Message about ((topic))Body: Hello ((first name)), your reference is ((ref number))Create an email message, supplying the template ID and apersonalisationdictionary (this should also include any variables defined in the template subject):fromdjango_gov_notify.messageimportNotifyEmailMessagemessage=NotifyEmailMessage(to=["recipient@example.com"],template_id="43573f75-80e7-402f-b308-e5f1066fbd6f",personalisation={"topic":"The Prisoner","first name":"Patrick","ref number":"6",},)message.send()Note that in this case a subject and body are not required, nor permitted, because the personalisation dict won't know how to do anything with them.Sending an email using the default (blank) templateThis assumes you have configured a blank template with the parametersSubject: ((subject))Body: ((body))fromdjango_gov_notify.messageimportNotifyEmailMessagemessage=NotifyEmailMessage(subject="Test subject",body="Test message content",to=["recipient@example.com"])message.send()Note that in this case a subject and body are required, and you must not pass thetemplate_idorpersonalisationkwargs.Sending an email using thesend_mailshortcut functionUse it in the normal fashion, including a 'from' address that will be discarded:fromdjango.utils.mailimportsend_mailsend_mail("Subject","Message content","from@example.com",["recipient@example.com"])This will use the blank template ID configured assettings.GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID. Attachments, custom headers, and BCC recipients are not supported.ContributingTo work on this repository locally:install:poetry installrun tests:poetry run python runtests.py