Introduction¶
django-emailtools
takes an approach to sending emails similar to the
class-based view’s approach to view callables. At Fusionbox we’ve found that
our email sending often follows a predictable pattern and class-based emails
arose from that pattern.
Ultimately, the goal of class-based emails is to
Installation¶
Install the package:
pip install django-emailtools
Or you can install it from source:
pip install https://github.com/barseghyanartur/django-emailtools-reloaded/archive/master.zip
Add
emailtools
to yourINSTALLED_APPS
.
Quick Start¶
Write your email class and instantiate your email callable.
# app/emails.py
from emailtools import BasicEmail
class WelcomeEmail(BasicEmail):
from_email = 'admin@example.com'
subject = 'Welcome to example.com'
template_name = 'welcome_email.html'
def get_to(self):
return [self.args[0]]
def get_context_data(self, **kwargs):
kwargs = super(WelcomeEmail, self).get_context_data(**kwargs)
kwargs['email_address'] = self.args[0]
return kwargs
send_welcome_email = WelcomeEmail.as_callable()
Write you email template.
# app/templates/welcome_email.html
<html>
<body>
<h1>Welcome to example.com</h2>
<p>Here is some content about how happy we are to have you at
example.com. You can now login using '{{ email_address }}' as your
username</p>
</body>
</html>
And to send the email.
from app.emails import send_welcome_email
send_welcome_email('joe.smith@example.com') # Sends the email
Or if you wanted to do something with the message before you sent it:
from myapp.emails import WelcomeEmail
email_instance = WelcomeEmail
message = email_instance.get_email_message()
message
<django.core.mail.message.EmailMultiAlternatives at 0x10668d150>
message.send() # Sends the email.