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 hashes)

Uploaded Source

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