1
0
mirror of https://github.com/django/django.git synced 2025-07-04 17:59:13 +00:00

magic-removal: Merged to [2548]

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2549 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-03-22 22:35:14 +00:00
parent e134da8a1a
commit 17a4401f4c
11 changed files with 3759 additions and 123 deletions

View File

@ -56,7 +56,6 @@ answer newbie questions, and generally made Django that much better:
gandalf@owca.info
Baishampayan Ghose
Espen Grindhaug <http://grindhaug.org/>
Gustavo Picon
Brant Harris
hipertracker@gmail.com
Ian Holsman <http://feh.holsman.net/>
@ -68,6 +67,7 @@ answer newbie questions, and generally made Django that much better:
Russell Keith-Magee <freakboy@iinet.net.au>
Garth Kidd <http://www.deadlybloodyserious.com/>
Sune Kirkeby <http://ibofobi.dk/>
Bruce Kroeze <http://coderseye.com/>
lakin.wecker@gmail.com
Stuart Langridge <http://www.kryogenix.org/>
Eugene Lazutkin <http://lazutkin.com/blog/>
@ -89,6 +89,7 @@ answer newbie questions, and generally made Django that much better:
oggie rob <oz.robharvey@gmail.com>
pgross@thoughtworks.com
phaedo <http://phaedo.cx/>
Gustavo Picon
Luke Plant <http://lukeplant.me.uk/>
plisk
Daniel Poelzleithner <http://poelzi.org/>

View File

@ -39,6 +39,7 @@ LANGUAGES = (
('cy', _('Welsh')),
('da', _('Danish')),
('de', _('German')),
('el', _('Greek')),
('en', _('English')),
('es', _('Spanish')),
('fr', _('French')),
@ -52,6 +53,7 @@ LANGUAGES = (
('ro', _('Romanian')),
('ru', _('Russian')),
('sk', _('Slovak')),
('sl', _('Slovenian')),
('sr', _('Serbian')),
('sv', _('Swedish')),
('zh-cn', _('Simplified Chinese')),
@ -85,6 +87,10 @@ DATABASE_PORT = '' # Set to empty string for default. Not used with
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
# List of strings representing installed apps.
INSTALLED_APPS = ()

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-02-02 11:26+0100\n"
"POT-Creation-Date: 2006-03-20 11:44+0100\n"
"PO-Revision-Date: 2005-10-08 00:03+0200\n"
"Last-Translator: Georg Bauer <gb@bofh.ms>\n"
"MIME-Version: 1.0\n"
@ -74,7 +74,7 @@ msgstr "Datum/Zeit Erstellung"
msgid "is public"
msgstr "ist öffentlich"
#: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:256
#: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:257
msgid "IP address"
msgstr "IP-Adresse"
@ -429,7 +429,7 @@ msgstr "Logeintrag"
msgid "log entries"
msgstr "Logeinträge"
#: contrib/admin/templatetags/admin_list.py:241
#: contrib/admin/templatetags/admin_list.py:240
msgid "All dates"
msgstr "Alle Tage"
@ -573,78 +573,74 @@ msgstr "Sicher? Ganz sicher?"
msgid "Change history: %s"
msgstr "Änderungsgeschichte: %s"
#: contrib/admin/views/doc.py:244 contrib/admin/views/doc.py:253
#: contrib/admin/views/doc.py:255 contrib/admin/views/doc.py:261
#: contrib/admin/views/doc.py:262 contrib/admin/views/doc.py:264
#: contrib/admin/views/doc.py:245 contrib/admin/views/doc.py:254
#: contrib/admin/views/doc.py:256 contrib/admin/views/doc.py:262
#: contrib/admin/views/doc.py:263 contrib/admin/views/doc.py:265
msgid "Integer"
msgstr "Ganzzahl"
#: contrib/admin/views/doc.py:245
#: contrib/admin/views/doc.py:246
msgid "Boolean (Either True or False)"
msgstr "Wahrheitswert (Wahr oder Falsch)"
#: contrib/admin/views/doc.py:246
#: contrib/admin/views/doc.py:247 contrib/admin/views/doc.py:264
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Zeichenkette (bis zu %(maxlength)s Zeichen)"
#: contrib/admin/views/doc.py:247
#: contrib/admin/views/doc.py:248
msgid "Comma-separated integers"
msgstr "Kommaseparierte Liste von Zahlen"
#: contrib/admin/views/doc.py:248
#: contrib/admin/views/doc.py:249
msgid "Date (without time)"
msgstr "Datum (ohne Zeit)"
#: contrib/admin/views/doc.py:249
#: contrib/admin/views/doc.py:250
msgid "Date (with time)"
msgstr "Datum (mit Zeit)"
#: contrib/admin/views/doc.py:250
#: contrib/admin/views/doc.py:251
msgid "E-mail address"
msgstr "E-mail-Adresse"
#: contrib/admin/views/doc.py:251 contrib/admin/views/doc.py:254
#: contrib/admin/views/doc.py:252 contrib/admin/views/doc.py:255
msgid "File path"
msgstr "Dateipfad"
#: contrib/admin/views/doc.py:252
#: contrib/admin/views/doc.py:253
msgid "Decimal number"
msgstr "Dezimalzahl"
#: contrib/admin/views/doc.py:258
#: contrib/admin/views/doc.py:259
msgid "Boolean (Either True, False or None)"
msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)"
#: contrib/admin/views/doc.py:259
#: contrib/admin/views/doc.py:260
msgid "Relation to parent model"
msgstr "Beziehung zum Übermodell"
#: contrib/admin/views/doc.py:260
#: contrib/admin/views/doc.py:261
msgid "Phone number"
msgstr "Telefonnummer"
#: contrib/admin/views/doc.py:263
msgid "String (up to 50)"
msgstr "Zeichenkette (bis zu 50 Zeichen)"
#: contrib/admin/views/doc.py:265
#: contrib/admin/views/doc.py:266
msgid "Text"
msgstr "Text"
#: contrib/admin/views/doc.py:266
#: contrib/admin/views/doc.py:267
msgid "Time"
msgstr "Zeit"
#: contrib/admin/views/doc.py:267 contrib/flatpages/models/flatpages.py:6
#: contrib/admin/views/doc.py:268 contrib/flatpages/models/flatpages.py:6
msgid "URL"
msgstr "URL"
#: contrib/admin/views/doc.py:268
#: contrib/admin/views/doc.py:269
msgid "U.S. state (two uppercase letters)"
msgstr "U.S. Bundesstaat (zwei Grossbuchstaben)"
#: contrib/admin/views/doc.py:269
#: contrib/admin/views/doc.py:270
msgid "XML text"
msgstr "XML Text"
@ -1474,75 +1470,83 @@ msgid "German"
msgstr "Deutsch"
#: conf/global_settings.py:42
msgid "Greek"
msgstr "Griechisch"
#: conf/global_settings.py:43
msgid "English"
msgstr "Englisch"
#: conf/global_settings.py:43
#: conf/global_settings.py:44
msgid "Spanish"
msgstr "Spanisch"
#: conf/global_settings.py:44
#: conf/global_settings.py:45
msgid "French"
msgstr "Französisch"
#: conf/global_settings.py:45
#: conf/global_settings.py:46
msgid "Galician"
msgstr "Galicisch"
#: conf/global_settings.py:46
#: conf/global_settings.py:47
msgid "Icelandic"
msgstr "Isländisch"
#: conf/global_settings.py:47
#: conf/global_settings.py:48
msgid "Italian"
msgstr "Italienisch"
#: conf/global_settings.py:48
#: conf/global_settings.py:49
msgid "Japanese"
msgstr "Japanisch"
#: conf/global_settings.py:49
#: conf/global_settings.py:50
msgid "Dutch"
msgstr "Holländisch"
#: conf/global_settings.py:50
#: conf/global_settings.py:51
msgid "Norwegian"
msgstr "Norwegisch"
#: conf/global_settings.py:51
#: conf/global_settings.py:52
msgid "Brazilian"
msgstr "Brasilianisch"
#: conf/global_settings.py:52
#: conf/global_settings.py:53
msgid "Romanian"
msgstr "Rumänisch"
#: conf/global_settings.py:53
#: conf/global_settings.py:54
msgid "Russian"
msgstr "Russisch"
#: conf/global_settings.py:54
#: conf/global_settings.py:55
msgid "Slovak"
msgstr "Slowakisch"
#: conf/global_settings.py:55
#: conf/global_settings.py:56
msgid "Slovenian"
msgstr "Slowenisch"
#: conf/global_settings.py:57
msgid "Serbian"
msgstr "Serbisch"
#: conf/global_settings.py:56
#: conf/global_settings.py:58
msgid "Swedish"
msgstr "Schwedisch"
#: conf/global_settings.py:57
#: conf/global_settings.py:59
msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
#: conf/global_settings.py:58
#: conf/global_settings.py:60
msgid "Traditional Chinese"
msgstr "Traditionelles Chinesisch"
#: core/formfields.py:59 core/meta/fields.py:285 core/meta/fields.py:488
#: core/meta/fields.py:499
#: core/formfields.py:59 core/meta/fields.py:283 core/meta/fields.py:486
#: core/meta/fields.py:497
msgid "This field is required."
msgstr "Dieses Feld ist zwingend."
@ -1579,75 +1583,77 @@ msgstr "Bitte eine ganze, positive Zahl eingeben."
msgid "Enter a whole number between 0 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
#: core/validators.py:62
#: core/validators.py:61
msgid "This value must contain only letters, numbers and underscores."
msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
#: core/validators.py:66
msgid "This value must contain only letters, numbers, underscores and slashes."
#: core/validators.py:65
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
msgstr ""
"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche "
"enthalten."
#: core/validators.py:74
#: core/validators.py:73
msgid "Uppercase letters are not allowed here."
msgstr "Großbuchstaben sind hier nicht erlaubt."
#: core/validators.py:78
#: core/validators.py:77
msgid "Lowercase letters are not allowed here."
msgstr "Kleinbuchstaben sind hier nicht erlaubt."
#: core/validators.py:85
#: core/validators.py:84
msgid "Enter only digits separated by commas."
msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt."
#: core/validators.py:97
#: core/validators.py:96
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Bitte mit Komma getrennte, gültige eMail-Adressen eingeben."
#: core/validators.py:101
#: core/validators.py:100
msgid "Please enter a valid IP address."
msgstr "Bitte eine gültige IP-Adresse eingeben."
#: core/validators.py:105
#: core/validators.py:104
msgid "Empty values are not allowed here."
msgstr "Dieses Feld darf nicht leer sein."
#: core/validators.py:109
#: core/validators.py:108
msgid "Non-numeric characters aren't allowed here."
msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt."
#: core/validators.py:113
#: core/validators.py:112
msgid "This value can't be comprised solely of digits."
msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
#: core/validators.py:118
#: core/validators.py:117
msgid "Enter a whole number."
msgstr "Bitte eine ganze Zahl eingeben."
#: core/validators.py:122
#: core/validators.py:121
msgid "Only alphabetical characters are allowed here."
msgstr "Nur alphabetische Zeichen sind hier erlaubt."
#: core/validators.py:126
#: core/validators.py:125
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
#: core/validators.py:130
#: core/validators.py:129
msgid "Enter a valid time in HH:MM format."
msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
#: core/validators.py:134
#: core/validators.py:133
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM "
"eingeben."
#: core/validators.py:138
#: core/validators.py:137
msgid "Enter a valid e-mail address."
msgstr "Bitte eine gültige eMail-Adresse eingeben"
#: core/validators.py:150
#: core/validators.py:149
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@ -1655,27 +1661,27 @@ msgstr ""
"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild "
"oder ist defekt."
#: core/validators.py:157
#: core/validators.py:156
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
#: core/validators.py:161
#: core/validators.py:160
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Telefonnummern müssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungültig."
#: core/validators.py:169
#: core/validators.py:168
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime video."
#: core/validators.py:173
#: core/validators.py:172
msgid "A valid URL is required."
msgstr "Eine gültige URL ist hier verlangt."
#: core/validators.py:187
#: core/validators.py:186
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@ -1684,71 +1690,71 @@ msgstr ""
"Bitte gültiges HTML eingeben. Fehler sind:\n"
"%s"
#: core/validators.py:194
#: core/validators.py:193
#, python-format
msgid "Badly formed XML: %s"
msgstr "Ungültiges XML: %s"
#: core/validators.py:204
#: core/validators.py:203
#, python-format
msgid "Invalid URL: %s"
msgstr "Ungültige URL: %s"
#: core/validators.py:208 core/validators.py:210
#: core/validators.py:207 core/validators.py:209
#, python-format
msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht."
#: core/validators.py:216
#: core/validators.py:215
msgid "Enter a valid U.S. state abbreviation."
msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
#: core/validators.py:231
#: core/validators.py:230
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
#: core/validators.py:238
#: core/validators.py:237
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dieses Feld muss zum Feld '%s' passen."
#: core/validators.py:257
#: core/validators.py:256
msgid "Please enter something for at least one field."
msgstr "Bitte mindestens eines der Felder ausfüllen."
#: core/validators.py:266 core/validators.py:277
#: core/validators.py:265 core/validators.py:276
msgid "Please enter both fields or leave them both empty."
msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
#: core/validators.py:284
#: core/validators.py:283
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat."
#: core/validators.py:296
#: core/validators.py:295
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist."
#: core/validators.py:315
#: core/validators.py:314
msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt."
#: core/validators.py:338
#: core/validators.py:337
#, python-format
msgid "This value must be a power of %s."
msgstr "Dieser Wert muss eine Potenz von %s sein."
#: core/validators.py:349
#: core/validators.py:348
msgid "Please enter a valid decimal number."
msgstr "Bitte eine gültige Dezimalzahl eingeben."
#: core/validators.py:351
#: core/validators.py:350
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@ -1756,7 +1762,7 @@ msgid_plural ""
msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben."
#: core/validators.py:354
#: core/validators.py:353
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@ -1766,39 +1772,39 @@ msgstr[0] ""
msgstr[1] ""
"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
#: core/validators.py:364
#: core/validators.py:363
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei mindestens %s Bytes gross "
"ist."
#: core/validators.py:365
#: core/validators.py:364
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
"Bitte sicherstellen, daß die hochgeladene Datei maximal %s Bytes gross ist."
#: core/validators.py:378
#: core/validators.py:377
msgid "The format for this field is wrong."
msgstr "Das Format für dieses Feld ist falsch."
#: core/validators.py:393
#: core/validators.py:392
msgid "This field is invalid."
msgstr "Dieses Feld ist ungültig."
#: core/validators.py:428
#: core/validators.py:427
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen."
#: core/validators.py:431
#: core/validators.py:430
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
#: core/validators.py:464
#: core/validators.py:463
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@ -1807,7 +1813,7 @@ msgstr ""
"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile "
"beginnt mit \"%(start)s\"."
#: core/validators.py:468
#: core/validators.py:467
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@ -1816,7 +1822,7 @@ msgstr ""
"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile "
"beginnt mit \"%(start)s\"."
#: core/validators.py:473
#: core/validators.py:472
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@ -1825,7 +1831,7 @@ msgstr ""
"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit "
"\"%(start)s\"."
#: core/validators.py:478
#: core/validators.py:477
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@ -1834,7 +1840,7 @@ msgstr ""
"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s"
"\"."
#: core/validators.py:482
#: core/validators.py:481
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@ -1843,7 +1849,7 @@ msgstr ""
"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die "
"Zeile beginnt mit \"%(start)s\"."
#: core/validators.py:487
#: core/validators.py:486
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@ -1880,11 +1886,11 @@ msgstr ""
" Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command"
"\", beim Klicken gedrückt halten."
#: core/meta/fields.py:508
#: core/meta/fields.py:506
msgid "Enter a valid filename."
msgstr "Bitte einen gültigen Dateinamen eingeben"
#: core/meta/fields.py:782
#: core/meta/fields.py:780
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -14,22 +14,25 @@ class SafeMIMEText(MIMEText):
raise BadHeaderError, "Header values can't contain newlines (got %r for header %r)" % (val, name)
MIMEText.__setitem__(self, name, val)
def send_mail(subject, message, from_email, recipient_list, fail_silently=False):
def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
"""
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)
return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password)
def send_mass_mail(datatuple, fail_silently=False):
def send_mass_mail(datatuple, fail_silently=False, auth_user=settings.EMAIL_HOST_USER, auth_password=settings.EMAIL_HOST_PASSWORD):
"""
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.
If auth_user and auth_password are set, they're used to log in.
"""
try:
server = smtplib.SMTP(settings.EMAIL_HOST)
if auth_user and auth_password:
server.login(auth_user, auth_password)
except:
if fail_silently:
return
@ -58,9 +61,9 @@ def send_mass_mail(datatuple, fail_silently=False):
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."
"Sends a message to the admins, as defined by the ADMINS setting."
send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.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"
"Sends a message to the managers, as defined by the MANAGERS setting."
send_mail(settings.EMAIL_SUBJECT_PREFIX + subject, message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS], fail_silently)

View File

@ -26,10 +26,12 @@ The send_mail function
The simplest way to send e-mail is using the function
``django.core.mail.send_mail``. Here's its definition::
send_mail(subject, message, from_email, recipient_list, fail_silently=False)
send_mail(subject, message, from_email, recipient_list,
fail_silently=False, auth_user=EMAIL_HOST_USER,
auth_password=EMAIL_HOST_PASSWORD)
All parameters are required except for ``fail_silently``, which is ``False`` by
default.
The ``subject``, ``message``, ``from_email`` and ``recipient_list`` parameters
are required.
* ``subject``: A string.
* ``message``: A string.
@ -40,6 +42,13 @@ default.
* ``fail_silently``: A boolean. If it's ``False``, ``send_mail`` will raise
an ``smtplib.SMTPException``. See the `smtplib docs`_ for a list of
possible exceptions, all of which are subclasses of ``SMTPException``.
* ``auth_user``: **New in Django development version.** The optional
username to use to authenticate to the SMTP server. If this isn't
provided, Django will use the value of the ``EMAIL_HOST_USER`` setting.
* ``auth_password``: **New in Django development version.** The optional
password to use to authenticate to the SMTP server. If this isn't
provided, Django will use the value of the ``EMAIL_HOST_PASSWORD``
setting.
.. _smtplib docs: http://www.python.org/doc/current/lib/module-smtplib.html
@ -49,13 +58,16 @@ The send_mass_mail function
``django.core.mail.send_mass_mail`` is intended to handle mass e-mailing.
Here's the definition::
send_mass_mail(datatuple, fail_silently=False):
send_mass_mail(datatuple, fail_silently=False,
auth_user=EMAIL_HOST_USER, auth_password=EMAIL_HOST_PASSWORD):
``datatuple`` is a tuple in which each element is in this format::
(subject, message, from_email, recipient_list)
``fail_silently`` has the same function as in ``send_mail()``.
``fail_silently``, ``auth_user`` and ``auth_password`` have the same functions
as in ``send_mail()``. Note that ``auth_user`` and ``auth_password`` are only
available in the Django development version.
Each separate element of ``datatuple`` results in a separate e-mail message.
As in ``send_mail()``, recipients in the same ``recipient_list`` will all see

View File

@ -257,7 +257,7 @@ The date-based generic functions are:
your URLconf, and you'll need to pass a ``slug_field`` key in your info
dictionary to indicate the name of the slug field.
If your using the object_id-style URLs, you'll just need to give the URL
If you're using the object_id-style URLs, you'll just need to give the URL
pattern an ``object_id`` field.
You can also pass the ``template_name_field`` argument to indicate that the
@ -290,23 +290,24 @@ Individual views are:
Takes the following optional arguments:
======================= =================================================
Argument Description
======================= =================================================
``paginate_by`` If set to an integer, the view will paginate
objects with ``paginate_by`` objects per page.
The view will expect a ``page`` GET param with
the (zero-indexed) page number.
======================== =================================================
Argument Description
======================== =================================================
``paginate_by`` If set to an integer, the view will paginate
objects with ``paginate_by`` objects per page.
The view will expect a ``page`` GET param with
the (zero-indexed) page number.
``allow_empty`` If ``False`` and there are no objects to display,
the view will raise a 404 instead of displaying
an empty index page. ``False`` is default.
``template_object_name`` **New in Django development version.** Designates
the name of the object template variable. Default
is ``'object'``.
======================= =================================================
``allow_empty`` If ``False`` and there are no objects to display,
the view will raise a 404 instead of displaying
an empty index page. ``False`` is default.
Uses the template ``<app_label>/<model_name>_list`` by default.
``template_object_name`` **New in Django development version.** Designates
the name of the object template variable. Default
is ``'object'``.
======================== =================================================
Uses the template ``<app_label>/<module_name_list>`` by default.
Has the following template context:

View File

@ -334,6 +334,30 @@ Default: ``'localhost'``
The host to use for sending e-mail.
EMAIL_HOST_PASSWORD
-------------------
Default: ``''`` (Empty string)
**New in Django development version.**
Username to use for the SMTP server defined in ``EMAIL_HOST``. If empty,
Django won't attempt authentication.
See also ``EMAIL_HOST_USER``.
EMAIL_HOST_USER
---------------
Default: ``''`` (Empty string)
**New in Django development version.**
Username to use for the SMTP server defined in ``EMAIL_HOST``. If empty,
Django won't attempt authentication.
See also ``EMAIL_HOST_PASSWORD``.
EMAIL_SUBJECT_PREFIX
--------------------