django-gov-notify


Namedjango-gov-notify JSON
Version 0.6.0 PyPI version JSON
download
home_pagehttps://github.com/nimasmi/django-gov-notify
SummaryA GOV.UK Notify flavoured Django email backend
upload_time2024-10-25 12:39:50
maintainerNone
docs_urlNone
authorNick Smith
requires_python<3.13,>=3.9
licenseBSD-2-Clause
keywords email django
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # django-gov-notify, a GOV.UK Notify flavoured Django email backend

![GitHub workflow](https://github.com/nimasmi/django-gov-notify/actions/workflows/CI-tests.yml/badge.svg)

django-gov-notify provides Django integration with the [GOV.UK Notify](https://www.notifications.service.gov.uk/) service for sending emails and SMS messages. [Python Client Documentation](https://docs.notifications.service.gov.uk/python.html).

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 back `1`, 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*`.

## Compatibility

django-gov-notify supports:

- Python 3.9, 3.10, 3.11 and 3.12
- Django 4.2, 5.0 and 5.1

## Installation

Using [pip](https://pip.pypa.io/en/stable/):

```bash
$ pip install django-gov-notify
```

Using [Poetry](https://python-poetry.org/)

```bash
$ poetry add django-gov-notify
```

## Configuration

In your Django project's settings:

```python
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` (NB _not_ GOV_UK…)
- `GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID`

This plain template ID setting, and template IDs passed to the NotifyEmailMessage class, use string representations of the UUID keys.

## Usage

### Sending an email using a template

Configure the template in the [GOV.UK Notify dashboard](https://www.notifications.service.gov.uk/):

> Subject: Message about ((topic))  
> Body: Hello ((first name)), your reference is ((ref number))

Create an email message, supplying the template ID and a `personalisation` dictionary (this should also include any variables defined in the template subject):

```python
from django_gov_notify.message import NotifyEmailMessage

message = 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) template

This assumes you have configured a blank template with the parameters

> Subject: ((subject))  
> Body: ((body))

```python
from django_gov_notify.message import NotifyEmailMessage

message = 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 the `template_id` or `personalisation` kwargs.

### Sending an email using the `send_mail` shortcut function

Use it in the normal fashion, including a 'from' address that will be discarded:

```python
from django.utils.mail import send_mail

send_mail("Subject", "Message content", "from@example.com", ["recipient@example.com"])
```

This will use the blank template ID configured as `settings.GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID`. Attachments, custom headers, and BCC recipients are not supported.

## Contributing

To work on this repository locally:

- install: `poetry install`
- run tests: `poetry run python runtests.py`

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nimasmi/django-gov-notify",
    "name": "django-gov-notify",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.9",
    "maintainer_email": null,
    "keywords": "email, Django",
    "author": "Nick Smith",
    "author_email": "nick.smith@torchbox.com",
    "download_url": "https://files.pythonhosted.org/packages/62/8f/72d44b7a48617ca2d11a4b68a6f091a997e7dd3ad97b2bd5336e316d8b65/django_gov_notify-0.6.0.tar.gz",
    "platform": null,
    "description": "# django-gov-notify, a GOV.UK Notify flavoured Django email backend\n\n![GitHub workflow](https://github.com/nimasmi/django-gov-notify/actions/workflows/CI-tests.yml/badge.svg)\n\ndjango-gov-notify provides Django integration with the [GOV.UK Notify](https://www.notifications.service.gov.uk/) service for sending emails and SMS messages. [Python Client Documentation](https://docs.notifications.service.gov.uk/python.html).\n\nThis is implemented as a custom Django email backend. It presents a similar internal API to standard Django email backends, but with some restrictions:\n\n- GOV.UK Notify emails are sent to one recipient each. CC: and BCC: fields are not supported.\n- 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 back `1`, as per Django's default behaviour.\n- Attachments are not (at the moment) supported.\n- Custom headers are not supported.\n- To configure a 'reply-to' address, you must first configure such an address in the GOV.UK Notify admin interface.\n- The 'from' address field is not supported. This must be configured within the GOV.UK Notify admin interface.\n- Preformatted emails are expected to be configured in the service admin dashboard as Markdown templates with placeholders.\n- 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*`.\n\n## Compatibility\n\ndjango-gov-notify supports:\n\n- Python 3.9, 3.10, 3.11 and 3.12\n- Django 4.2, 5.0 and 5.1\n\n## Installation\n\nUsing [pip](https://pip.pypa.io/en/stable/):\n\n```bash\n$ pip install django-gov-notify\n```\n\nUsing [Poetry](https://python-poetry.org/)\n\n```bash\n$ poetry add django-gov-notify\n```\n\n## Configuration\n\nIn your Django project's settings:\n\n```python\nEMAIL_BACKEND = \"django_gov_notify.backends.NotifyEmailBackend\"\n```\n\nYou will need at least one email template ID, with a plain template:\n\n> Subject: ((subject))  \n> Body: ((body))\n\nSet the Django settings:\n\n- `GOVUK_NOTIFY_API_KEY` (NB _not_ GOV_UK\u2026)\n- `GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID`\n\nThis plain template ID setting, and template IDs passed to the NotifyEmailMessage class, use string representations of the UUID keys.\n\n## Usage\n\n### Sending an email using a template\n\nConfigure the template in the [GOV.UK Notify dashboard](https://www.notifications.service.gov.uk/):\n\n> Subject: Message about ((topic))  \n> Body: Hello ((first name)), your reference is ((ref number))\n\nCreate an email message, supplying the template ID and a `personalisation` dictionary (this should also include any variables defined in the template subject):\n\n```python\nfrom django_gov_notify.message import NotifyEmailMessage\n\nmessage = NotifyEmailMessage(\n    to=[\"recipient@example.com\"],\n    template_id=\"43573f75-80e7-402f-b308-e5f1066fbd6f\",\n    personalisation={\n        \"topic\": \"The Prisoner\",\n        \"first name\": \"Patrick\",\n        \"ref number\": \"6\",\n    },\n)\nmessage.send()\n```\n\nNote 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.\n\n### Sending an email using the default (blank) template\n\nThis assumes you have configured a blank template with the parameters\n\n> Subject: ((subject))  \n> Body: ((body))\n\n```python\nfrom django_gov_notify.message import NotifyEmailMessage\n\nmessage = NotifyEmailMessage(\n    subject=\"Test subject\", body=\"Test message content\", to=[\"recipient@example.com\"]\n)\nmessage.send()\n```\n\nNote that in this case a subject and body are required, and you must not pass the `template_id` or `personalisation` kwargs.\n\n### Sending an email using the `send_mail` shortcut function\n\nUse it in the normal fashion, including a 'from' address that will be discarded:\n\n```python\nfrom django.utils.mail import send_mail\n\nsend_mail(\"Subject\", \"Message content\", \"from@example.com\", [\"recipient@example.com\"])\n```\n\nThis will use the blank template ID configured as `settings.GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID`. Attachments, custom headers, and BCC recipients are not supported.\n\n## Contributing\n\nTo work on this repository locally:\n\n- install: `poetry install`\n- run tests: `poetry run python runtests.py`\n",
    "bugtrack_url": null,
    "license": "BSD-2-Clause",
    "summary": "A GOV.UK Notify flavoured Django email backend",
    "version": "0.6.0",
    "project_urls": {
        "Homepage": "https://github.com/nimasmi/django-gov-notify",
        "Repository": "https://github.com/nimasmi/django-gov-notify"
    },
    "split_keywords": [
        "email",
        " django"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c4cb160e87337261952666f83b724be7df1829bcf6d85e6fb828df4b70d6066",
                "md5": "f0418ce92899c01cdfa72acf78057d69",
                "sha256": "eba507a740d709ed8cffcd2d7599b40bca08b9078dc9a53cf4029a8f95bc6789"
            },
            "downloads": -1,
            "filename": "django_gov_notify-0.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f0418ce92899c01cdfa72acf78057d69",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.9",
            "size": 6830,
            "upload_time": "2024-10-25T12:39:49",
            "upload_time_iso_8601": "2024-10-25T12:39:49.222135Z",
            "url": "https://files.pythonhosted.org/packages/2c/4c/b160e87337261952666f83b724be7df1829bcf6d85e6fb828df4b70d6066/django_gov_notify-0.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "628f72d44b7a48617ca2d11a4b68a6f091a997e7dd3ad97b2bd5336e316d8b65",
                "md5": "14c9df7ad6e3095a56efc4d4271b5564",
                "sha256": "989368bc13eb1db59ed39354525a039bd6078312ec6510cfa6d2d123de68c2eb"
            },
            "downloads": -1,
            "filename": "django_gov_notify-0.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "14c9df7ad6e3095a56efc4d4271b5564",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.9",
            "size": 5706,
            "upload_time": "2024-10-25T12:39:50",
            "upload_time_iso_8601": "2024-10-25T12:39:50.436625Z",
            "url": "https://files.pythonhosted.org/packages/62/8f/72d44b7a48617ca2d11a4b68a6f091a997e7dd3ad97b2bd5336e316d8b65/django_gov_notify-0.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-25 12:39:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nimasmi",
    "github_project": "django-gov-notify",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "django-gov-notify"
}
        
Elapsed time: 0.39055s