summaryrefslogtreecommitdiff
path: root/django/core/mail.py
blob: 24a85d77f06d52ab2bd7c5dcf33d76b3bd8d10ec (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Use this module for e-mailing.

from django.conf.settings import DEFAULT_FROM_EMAIL, EMAIL_HOST, EMAIL_SUBJECT_PREFIX
from email.MIMEText import MIMEText
import smtplib

def send_mail(subject, message, from_email, recipient_list, fail_silently=False):
    """
    Easy wrapper for sending a single message to a recipient list. All members
    of the recipient list will see the other recipients in the 'To' field.
    """
    return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently)

def send_mass_mail(datatuple, fail_silently=False):
    """
    Given a datatuple of (subject, message, from_email, recipient_list), sends
    each message to each recipient list. Returns the number of e-mails sent.

    If from_email is None, the DEFAULT_FROM_EMAIL setting is used.
    """
    try:
        server = smtplib.SMTP(EMAIL_HOST)
    except:
        if fail_silently:
            return
        raise
    num_sent = 0
    for subject, message, from_email, recipient_list in datatuple:
        if not recipient_list:
            continue
        from_email = from_email or DEFAULT_FROM_EMAIL
        msg = MIMEText(message)
        msg['Subject'] = subject
        msg['From'] = from_email
        msg['To'] = ', '.join(recipient_list)
        server.sendmail(from_email, recipient_list, msg.as_string())
        num_sent += 1
    server.quit()
    return num_sent

def mail_admins(subject, message, fail_silently=False):
    "Sends a message to the admins, as defined by the ADMINS constant in settings.py."
    from django.conf.settings import ADMINS, SERVER_EMAIL
    send_mail(EMAIL_SUBJECT_PREFIX + subject, message, SERVER_EMAIL, [a[1] for a in ADMINS], fail_silently)

def mail_managers(subject, message, fail_silently=False):
    "Sends a message to the managers, as defined by the MANAGERS constant in settings.py"
    from django.conf.settings import MANAGERS, SERVER_EMAIL
    send_mail(EMAIL_SUBJECT_PREFIX + subject, message, SERVER_EMAIL, [a[1] for a in MANAGERS], fail_silently)