Using Templates to Send E-Mails

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from django.template import loader, Context
from django.core.mail import send_mail

t = loader.get_template('registration/email.txt')
c = Context({
    'name': request.POST.get('name'),
    'username': request.POST.get('username'),
    'product_name': 'Your Product Name',
    'product_url': 'http://www.yourproject.com/',
    'login_url': 'http://www.yourproject.com/login/',
})


send_mail('Welcome to My Project', t.render(c), 'from@address.com', ['user@adderss.com',], fail_silently=False)

##############################################################
Sample Template for the above: registration/email.txt
##############################################################
Dear {{ name }},

Thank you for signing up with {{ product_name }}.

Your new username is {{ username }}, and you can login at {{ login_url }}. Once logged in, you'll be able to access more features on our website..

We hope that {{ product_name }} is of good use to you. If you have any feedback, please respond to this e-mail or submit it to us via our website.

Regards,

{{ product_name }} Administration
{{ product_url }}

More like this

  1. Multipart Templated Email by stephen_mcd 4 years, 2 months ago
  2. Send templated email with text | html | optional files by grillermo 2 years, 6 months ago
  3. email_links by sansmojo 6 years, 10 months ago
  4. Template Tag to protect the E-mail address by nitinhayaran 4 years, 2 months ago
  5. Simple e-mail template tag by dchandek 6 years ago

Comments

djanphil (on July 15, 2007):

How do I separate the logic from the template? Where do I place the logic (in a python script, a view, or what?)

#

rpoulton (on October 3, 2007):

Just saw this comment, apologies for the late response.

Lines 1-14 would be in your view, whilst lines 19-30 are in a template called 'registration/email.txt'.

#

ubernostrum (on October 19, 2007):

The function render_to_string in django.template.loader would make this quite a bit shorter; it's somewhat like render_to_response except it returns the rendered string from the template instead of an HttpResponse.

#

(Forgotten your password?)