Skip to main content

Enhanced email classes for Django

Project description

django-enhanced-emails 💌

🔋 Batteries-included emails for Django.

  • Powerful templating engine
  • Multipart emails by default (HTML + text)
  • Web version rendering (with admin)
  • Easy file attachment
  • and more ...

Getting started

Simple setup

  • Install the package: pipenv install django-enhanced-emails

  • Create a new email class:

    # myapp/emails.py
    from enhanced_emails import EnhancedEmail
    
    class WelcomeEmail(EnhancedEmail):
        subject = "Welcome to our site!"
        html_template = "emails/welcome.html"
    
    <!-- myapp/templates/emails/welcome.html -->
    <strong>Welcome to our site {{first_name}}!</strong><br />
    
    Best, The OurSite team
    
  • Instanciate an email and send it:

    email = WelcomeEmail(
        to=[user.email],
        context={
          "first_name": user.first_name
        }
    )
    email.send()
    
  • ✨ All done! Our user received something like:

    Content-Type: multipart/alternative;
    boundary="===============7747654958126582044=="
    MIME-Version: 1.0
    Subject: hello
    From: hello@oursite.com
    To: user@gmail.com
    Date: Wed, 11 Apr 2018 17:13:02 -0000
    Message-ID: <152346678269.275.17989388690220812241@cf7f5f3375c9>
    
    --===============7747654958126582044==
    Content-Type: text/plain; charset="utf-8"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    
    Welcome to our site Elon!
    
    Best,
    The OurSite team
    --===============7747654958126582044==
    Content-Type: text/html; charset="utf-8"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    
    <strong>Welcome to our site Elon!</strong>
    
    Best,
    The OurSite team
    --===============7747654958126582044==--
    

Advanced setup (for web version rendering)

  • Add the enhanced_emails app to INSTALLED_APPS:

    # settings.py
    INSTALLED_APPS = [
        ...
        "enhanced_emails",
        ...
    ]
    
  • Add a new entry to urlpatterns:

    # urls.py
    urlpatterns = [
        path("admin/", admin.site.urls),
        path("emails/", include("enhanced_emails.urls")),
        ...
    ]
    
  • Use WebVersionEnhancedEmail instead of EnhancedEmail:

    from enhanced_emails import WebVersionEnhancedEmail
    
    class WelcomeEmail(WebVersionEnhancedEmail):
        subject = "Welcome to our site!"
        html_template = "emails/welcome.html"
    
  • Use the web_url variable in the email template:

    <!-- myapp/templates/emails/welcome.html -->
    <strong>Welcome to our site {{ first_name }}!</strong><br />
    
    Best, The OurSite team<br />
    
    <a href="{{ web_url }}">View in browser</a>
    
  • Instanciate an email and send it (notice that we need to pass the request as well now):

    email = WelcomeEmail(
        to=[user.email],
        context={
          'first_name': user.first_name
        },
        request=request
    )
    email.send()
    
  • The email is visible in the admin and on the site! ✨
    A sent email in the admin The web version of the email

Development

  • Deploy: python setup.py sdist && twine upload dist/*

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

django-enhanced-emails-0.0.7.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file django-enhanced-emails-0.0.7.tar.gz.

File metadata

  • Download URL: django-enhanced-emails-0.0.7.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for django-enhanced-emails-0.0.7.tar.gz
Algorithm Hash digest
SHA256 b41d2d15973ec445a3c42d81b54c3328d594450883c107eb9cba9987655e191a
MD5 75b296d2e25c4caa81ad837367a0305d
BLAKE2b-256 4b648bbcf34262c26c0cab0d7cb845647f14e8b33543d72b7b9d563d65887b21

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