Skip to main content

Django app to store emails in db

Project description

Jemail

Django app to store emails in db

Installation

pip install jemail
pip install django-anymail[sendgrid]

Anymail used as email backend, for now jemail tested only with sendgrid backend.

Update settings with:

EMAIL_BACKEND = "anymail.backends.sendgrid.EmailBackend"

# defaults
JEMAIL = {
    "METADATA_ID_KEY": "message_id",  # tag name for EmailMessage.pk in message metadata
    "HTML_MESSAGE_UPLOAD_TO": "emails/messages/",  # path to save html messages to
    "ATTACHMENT_UPLOAD_TO": "emails/attachments/",  # path to save attachments to
    # "IMPORT_HTML_MESSAGE_UPLOAD_TO": "myproject.utils.message_upload_to",  # callable option
    # "IMPORT_ATTACHMENT_UPLOAD_TO": "myproject.utils.attachment_upload_to",  # callable option
}

Usage

from jemail import EmailMessage, EmailAttachment

# save email in db
EmailMessage.objects.create_with_objects(
    to=["user@example.com"],
    subject="Subject",
    # if body not provided it derived from html_message
    # using html2text library
    body="Hi User,...",
    html_message="<p>Hi User...",
    # the rest is optional
    from_email="no-reply@example.com",
    cc=["cc@example.com"],
    bcc=["bcc@example.com"],
    attachments=[
        EmailAttachment.objects.create(
            filename="doc.pdf",
            mimetype="application/pdf",
            file=ContentFile(b"...", name="doc.pdf"),
        )
    ],
    reply_to=["Example Team <support@example.com>"],
    created_by_id=user.pk,
)

# build EmailMultiAlternatives from db
msg = EmailMessage.objects.get(pk=pk).build_message()
# send email
msg.send()

Development

nix-direnv:

echo "use flake" >> .envrc
direnv allow
app.install
pytest

nix:

nix develop
app.install
pytest

uv:

uv -q venv .venv
source .venv/bin/activate
uv pip install -e .[dev,test]
pre-commit install
pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jemail-0.1a6.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

jemail-0.1a6-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file jemail-0.1a6.tar.gz.

File metadata

  • Download URL: jemail-0.1a6.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for jemail-0.1a6.tar.gz
Algorithm Hash digest
SHA256 d63bd2ca2e0f6ecde68c188b480b4d468bf1cc434bad80887450fcfb20ef70fd
MD5 5ffda9b90d6c4a443f2a8052b901cce9
BLAKE2b-256 2d605958218013bfa9d4a40719f906b6395e779b62ab477f243bc57e16b27393

See more details on using hashes here.

File details

Details for the file jemail-0.1a6-py3-none-any.whl.

File metadata

  • Download URL: jemail-0.1a6-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for jemail-0.1a6-py3-none-any.whl
Algorithm Hash digest
SHA256 f6886e12f8a7a02c2ead24f67bfcdf68e8e07d4884c07a88c69bca05bfb57f95
MD5 dff9a7f4e0c518b8dfc4b2d7d8ed0b04
BLAKE2b-256 09217468b256e2ac2e2fd810e1c5313d8317e4cca908a553c5849af984c0c945

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page