From 94af19c43fad3e42d64981e22fe15b844f1f9eb6 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 1 Apr 2011 16:10:22 +0000 Subject: [PATCH] Changed e-mail to email throughout documentation and codebase. The one exception is translation strings, which I didn't want to disrupt git-svn-id: http://code.djangoproject.com/svn/django/trunk@15967 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 14 +- django/contrib/auth/forms.py | 2 +- django/contrib/auth/models.py | 6 +- django/contrib/auth/tests/remote_user.py | 2 +- django/core/mail/__init__.py | 4 +- django/utils/log.py | 2 +- docs/faq/help.txt | 2 +- docs/howto/error-reporting.txt | 22 +-- docs/index.txt | 2 +- docs/internals/committers.txt | 2 +- docs/internals/contributing.txt | 4 +- docs/misc/api-stability.txt | 2 +- docs/ref/contrib/formtools/form-wizard.txt | 4 +- docs/ref/contrib/sites.txt | 10 +- docs/ref/contrib/syndication.txt | 12 +- docs/ref/django-admin.txt | 2 +- docs/ref/forms/api.txt | 22 +-- docs/ref/forms/fields.txt | 16 +- docs/ref/forms/validation.txt | 10 +- docs/ref/models/fields.txt | 2 +- docs/ref/settings.txt | 20 +-- docs/ref/unicode.txt | 12 +- docs/ref/validators.txt | 2 +- docs/releases/1.2-alpha-1.txt | 20 +-- docs/releases/1.2.txt | 22 +-- docs/topics/auth.txt | 14 +- docs/topics/cache.txt | 2 +- docs/topics/email.txt | 180 ++++++++++----------- docs/topics/forms/index.txt | 10 +- docs/topics/logging.txt | 18 +-- docs/topics/signals.txt | 2 +- docs/topics/templates.txt | 4 +- docs/topics/testing.txt | 22 +-- tests/regressiontests/admin_views/tests.py | 8 +- 34 files changed, 239 insertions(+), 239 deletions(-) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 8638aee2371..50dbeeecace 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -124,7 +124,7 @@ LANGUAGE_COOKIE_NAME = 'django_language' USE_L10N = False # Not-necessarily-technical managers of the site. They get broken link -# notifications and other various e-mails. +# notifications and other various emails. MANAGERS = ADMINS # Default content type and charset to use for all HttpResponse objects, if a @@ -139,7 +139,7 @@ FILE_CHARSET = 'utf-8' # E-mail address that error messages come from. SERVER_EMAIL = 'root@localhost' -# Whether to send broken-link e-mails. +# Whether to send broken-link emails. SEND_BROKEN_LINK_EMAILS = False # Database connection info. @@ -165,10 +165,10 @@ DATABASE_ROUTERS = [] # to a module that defines an EmailBackend class. EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -# Host for sending e-mail. +# Host for sending email. EMAIL_HOST = 'localhost' -# Port for sending e-mail. +# Port for sending email. EMAIL_PORT = 25 # Optional SMTP authentication information for EMAIL_HOST. @@ -207,7 +207,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( # Output to use in template system for invalid (e.g. misspelled) variables. TEMPLATE_STRING_IF_INVALID = '' -# Default e-mail address to use for various automated correspondence from +# Default email address to use for various automated correspondence from # the site managers. DEFAULT_FROM_EMAIL = 'webmaster@localhost' @@ -462,11 +462,11 @@ COMMENTS_BANNED_USERS_GROUP = None # Set to None if you're not using it. COMMENTS_MODERATORS_GROUP = None -# The group ID that designates the users whose comments should be e-mailed to MANAGERS. +# The group ID that designates the users whose comments should be emailed to MANAGERS. # Set to None if you're not using it. COMMENTS_SKETCHY_USERS_GROUP = None -# The system will e-mail MANAGERS the first COMMENTS_FIRST_FEW comments by each +# The system will email MANAGERS the first COMMENTS_FIRST_FEW comments by each # user. Set this to 0 if you want to disable it. COMMENTS_FIRST_FEW = 0 diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py index 3dcbd8480c0..fde8f037c23 100644 --- a/django/contrib/auth/forms.py +++ b/django/contrib/auth/forms.py @@ -109,7 +109,7 @@ class PasswordResetForm(forms.Form): def clean_email(self): """ - Validates that an active user exists with the given e-mail address. + Validates that an active user exists with the given email address. """ email = self.cleaned_data["email"] self.users_cache = User.objects.filter( diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py index 4fceca840a1..8a1702ec977 100644 --- a/django/contrib/auth/models.py +++ b/django/contrib/auth/models.py @@ -100,7 +100,7 @@ class Group(models.Model): A user in a group automatically has all the permissions granted to that group. For example, if the group Site editors has the permission can_edit_home_page, any user in that group will have that permission. - Beyond permissions, groups are a convenient way to categorize users to apply some label, or extended functionality, to them. For example, you could create a group 'Special users', and you could write code that would do special things to those users -- such as giving them access to a members-only portion of your site, or sending them members-only e-mail messages. + Beyond permissions, groups are a convenient way to categorize users to apply some label, or extended functionality, to them. For example, you could create a group 'Special users', and you could write code that would do special things to those users -- such as giving them access to a members-only portion of your site, or sending them members-only email messages. """ name = models.CharField(_('name'), max_length=80, unique=True) permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True) @@ -115,7 +115,7 @@ class Group(models.Model): class UserManager(models.Manager): def create_user(self, username, email, password=None): """ - Creates and saves a User with the given username, e-mail and password. + Creates and saves a User with the given username, email and password. """ now = datetime.datetime.now() @@ -353,7 +353,7 @@ class User(models.Model): return messages def email_user(self, subject, message, from_email=None): - "Sends an e-mail to this User." + "Sends an email to this User." from django.core.mail import send_mail send_mail(subject, message, from_email, [self.email]) diff --git a/django/contrib/auth/tests/remote_user.py b/django/contrib/auth/tests/remote_user.py index ad8733fb60c..6ca6a2b1009 100644 --- a/django/contrib/auth/tests/remote_user.py +++ b/django/contrib/auth/tests/remote_user.py @@ -147,7 +147,7 @@ class RemoteUserCustomTest(RemoteUserTest): backend =\ 'django.contrib.auth.tests.remote_user.CustomRemoteUserBackend' - # REMOTE_USER strings with e-mail addresses for the custom backend to + # REMOTE_USER strings with email addresses for the custom backend to # clean. known_user = 'knownuser@example.com' known_user2 = 'knownuser2@example.com' diff --git a/django/core/mail/__init__.py b/django/core/mail/__init__.py index a3ad837bc9e..008950b7ae1 100644 --- a/django/core/mail/__init__.py +++ b/django/core/mail/__init__.py @@ -19,7 +19,7 @@ from django.core.mail.message import \ from django.core.mail.backends.smtp import EmailBackend as _SMTPConnection def get_connection(backend=None, fail_silently=False, **kwds): - """Load an e-mail backend and return an instance of it. + """Load an email backend and return an instance of it. If backend is None (default) settings.EMAIL_BACKEND is used. @@ -65,7 +65,7 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None): """ Given a datatuple of (subject, message, from_email, recipient_list), sends - each message to each recipient list. Returns the number of e-mails sent. + each message to each recipient list. Returns the number of emails 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. diff --git a/django/utils/log.py b/django/utils/log.py index e4aec73ee87..93e38d1e4bb 100644 --- a/django/utils/log.py +++ b/django/utils/log.py @@ -32,7 +32,7 @@ class AdminEmailHandler(logging.Handler): logging.Handler.__init__(self) self.include_html = include_html - """An exception log handler that e-mails log entries to site admins. + """An exception log handler that emails log entries to site admins. If the request is passed as the first argument to the log record, request data will be provided in the diff --git a/docs/faq/help.txt b/docs/faq/help.txt index d84b3f529fe..287ca34657a 100644 --- a/docs/faq/help.txt +++ b/docs/faq/help.txt @@ -44,7 +44,7 @@ the question on IRC -- visit the `#django IRC channel`_ on the Freenode IRC network. You might notice we have a second mailing list, called django-developers_ -- -but please don't e-mail support questions to this mailing list. This list is +but please don't email support questions to this mailing list. This list is for discussion of the development of Django itself. Asking a tech support question there is considered quite impolite. diff --git a/docs/howto/error-reporting.txt b/docs/howto/error-reporting.txt index baed78dcefd..241bdc1a37d 100644 --- a/docs/howto/error-reporting.txt +++ b/docs/howto/error-reporting.txt @@ -1,4 +1,4 @@ -Error reporting via e-mail +Error reporting via email ========================== When you're running a public site you should always turn off the @@ -9,12 +9,12 @@ revealed by the error pages. However, running with :setting:`DEBUG` set to ``False`` means you'll never see errors generated by your site -- everyone will just see your public error pages. You need to keep track of errors that occur in deployed sites, so Django can be -configured to e-mail you details of those errors. +configured to email you details of those errors. Server errors ------------- -When :setting:`DEBUG` is ``False``, Django will e-mail the users listed in the +When :setting:`DEBUG` is ``False``, Django will email the users listed in the :setting:`ADMINS` setting whenever your code raises an unhandled exception and results in an internal server error (HTTP status code 500). This gives the administrators immediate notification of any errors. The :setting:`ADMINS` will @@ -23,7 +23,7 @@ the HTTP request that caused the error. .. note:: - In order to send e-mail, Django requires a few settings telling it + In order to send email, Django requires a few settings telling it how to connect to your mail server. At the very least, you'll need to specify :setting:`EMAIL_HOST` and possibly :setting:`EMAIL_HOST_USER` and :setting:`EMAIL_HOST_PASSWORD`, @@ -32,8 +32,8 @@ the HTTP request that caused the error. documentation ` for a full list of email-related settings. -By default, Django will send e-mail from root@localhost. However, some mail -providers reject all e-mail from this address. To use a different sender +By default, Django will send email from root@localhost. However, some mail +providers reject all email from this address. To use a different sender address, modify the :setting:`SERVER_EMAIL` setting. To disable this behavior, just remove all entries from the :setting:`ADMINS` @@ -43,15 +43,15 @@ setting. .. versionadded:: 1.3 - Server error e-mails are sent using the logging framework, so you can + Server error emails are sent using the logging framework, so you can customize this behaviour by :doc:`customizing your logging configuration `. 404 errors ---------- -Django can also be configured to e-mail errors about broken links (404 "page -not found" errors). Django sends e-mails about 404 errors when: +Django can also be configured to email errors about broken links (404 "page +not found" errors). Django sends emails about 404 errors when: * :setting:`DEBUG` is ``False`` @@ -60,9 +60,9 @@ not found" errors). Django sends e-mails about 404 errors when: * Your :setting:`MIDDLEWARE_CLASSES` setting includes ``CommonMiddleware`` (which it does by default). -If those conditions are met, Django will e-mail the users listed in the +If those conditions are met, Django will email the users listed in the :setting:`MANAGERS` setting whenever your code raises a 404 and the request has -a referer. (It doesn't bother to e-mail for 404s that don't have a referer -- +a referer. (It doesn't bother to email for 404s that don't have a referer -- those are usually just people typing in broken URLs or broken Web 'bots). You can tell Django to stop reporting particular 404s by tweaking the diff --git a/docs/index.txt b/docs/index.txt index 0cf066ee01c..9135d320196 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -159,7 +159,7 @@ The development process :doc:`FastCGI/SCGI/AJP ` | :doc:`Apache authentication ` | :doc:`Handling static files ` | - :doc:`Tracking code errors by e-mail ` + :doc:`Tracking code errors by email ` Other batteries included ======================== diff --git a/docs/internals/committers.txt b/docs/internals/committers.txt index a4def3b1e51..ab102156e73 100644 --- a/docs/internals/committers.txt +++ b/docs/internals/committers.txt @@ -151,7 +151,7 @@ Joseph Kocherhans `Gary Wilson`_ Gary starting contributing patches to Django in 2006 while developing Web applications for `The University of Texas`_ (UT). Since, he has made - contributions to the e-mail and forms systems, as well as many other + contributions to the email and forms systems, as well as many other improvements and code cleanups throughout the code base. Gary is currently a developer and software engineering graduate student at diff --git a/docs/internals/contributing.txt b/docs/internals/contributing.txt index 6e14083dbef..a46a7d7b546 100644 --- a/docs/internals/contributing.txt +++ b/docs/internals/contributing.txt @@ -113,7 +113,7 @@ following actions: security problems immediately. * Pre-notify everyone we know to be running the affected version(s) of - Django. We will send these notifications through private e-mail + Django. We will send these notifications through private email which will include documentation of the vulnerability, links to the relevant patch(es), and a request to keep the vulnerability confidential until the official go-public date. @@ -788,7 +788,7 @@ documentation: * **Django** -- when referring to the framework, capitalize Django. It is lowercase only in Python code and in the djangoproject.com logo. - * **e-mail** -- it has a hyphen. + * **email** -- no hyphen. * **MySQL** diff --git a/docs/misc/api-stability.txt b/docs/misc/api-stability.txt index 1d5f9ddd067..3ff563dc67e 100644 --- a/docs/misc/api-stability.txt +++ b/docs/misc/api-stability.txt @@ -45,7 +45,7 @@ of 1.0. This includes these APIs: - :doc:`Model definition, managers, querying and transactions ` - - :doc:`Sending e-mail `. + - :doc:`Sending email `. - :doc:`File handling and storage ` diff --git a/docs/ref/contrib/formtools/form-wizard.txt b/docs/ref/contrib/formtools/form-wizard.txt index 15680029f3f..ea6b03858db 100644 --- a/docs/ref/contrib/formtools/form-wizard.txt +++ b/docs/ref/contrib/formtools/form-wizard.txt @@ -35,7 +35,7 @@ Here's the basic workflow for how a user would use a wizard: 3. Step 1 and 2 repeat, for every subsequent form in the wizard. 4. Once the user has submitted all the forms and all the data has been validated, the wizard processes the data -- saving it to the database, - sending an e-mail, or whatever the application needs to do. + sending an email, or whatever the application needs to do. Usage ===== @@ -67,7 +67,7 @@ convention is to put them in a file called :file:`forms.py` in your application. For example, let's write a "contact form" wizard, where the first page's form -collects the sender's e-mail address and subject, and the second page collects +collects the sender's email address and subject, and the second page collects the message itself. Here's what the :file:`forms.py` might look like:: from django import forms diff --git a/docs/ref/contrib/sites.txt b/docs/ref/contrib/sites.txt index 4730cb2e63a..58f66daf020 100644 --- a/docs/ref/contrib/sites.txt +++ b/docs/ref/contrib/sites.txt @@ -181,9 +181,9 @@ fallback for cases where it is not installed. Getting the current domain for display -------------------------------------- -LJWorld.com and Lawrence.com both have e-mail alert functionality, which lets +LJWorld.com and Lawrence.com both have email alert functionality, which lets readers sign up to get notifications when news happens. It's pretty basic: A -reader signs up on a Web form, and he immediately gets an e-mail saying, +reader signs up on a Web form, and he immediately gets an email saying, "Thanks for your subscription." It'd be inefficient and redundant to implement this signup-processing code @@ -211,9 +211,9 @@ Here's an example of what the form-handling view looks like:: # ... -On Lawrence.com, this e-mail has the subject line "Thanks for subscribing to -lawrence.com alerts." On LJWorld.com, the e-mail has the subject "Thanks for -subscribing to LJWorld.com alerts." Same goes for the e-mail's message body. +On Lawrence.com, this email has the subject line "Thanks for subscribing to +lawrence.com alerts." On LJWorld.com, the email has the subject "Thanks for +subscribing to LJWorld.com alerts." Same goes for the email's message body. Note that an even more flexible (but more heavyweight) way of doing this would be to use Django's template system. Assuming Lawrence.com and LJWorld.com have diff --git a/docs/ref/contrib/syndication.txt b/docs/ref/contrib/syndication.txt index 467152cc131..9a0aa9b1499 100644 --- a/docs/ref/contrib/syndication.txt +++ b/docs/ref/contrib/syndication.txt @@ -455,15 +455,15 @@ This example illustrates all possible attributes and methods for a def author_email(self, obj): """ Takes the object returned by get_object() and returns the feed's - author's e-mail as a normal Python string. + author's email as a normal Python string. """ def author_email(self): """ - Returns the feed's author's e-mail as a normal Python string. + Returns the feed's author's email as a normal Python string. """ - author_email = 'test@example.com' # Hard-coded author e-mail. + author_email = 'test@example.com' # Hard-coded author email. # AUTHOR LINK --One of the following three is optional. The framework # looks for them in this order. In each case, the URL should include @@ -637,15 +637,15 @@ This example illustrates all possible attributes and methods for a def item_author_email(self, obj): """ Takes an item, as returned by items(), and returns the item's - author's e-mail as a normal Python string. + author's email as a normal Python string. """ def item_author_email(self): """ - Returns the author e-mail for every item in the feed. + Returns the author email for every item in the feed. """ - item_author_email = 'test@example.com' # Hard-coded author e-mail. + item_author_email = 'test@example.com' # Hard-coded author email. # ITEM AUTHOR LINK -- One of the following three is optional. The # framework looks for them in this order. In each case, the URL should diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 33c4c8b8e1a..9b3f66d39d9 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -1086,7 +1086,7 @@ a password has been manually set for it. .. django-admin-option:: --username .. django-admin-option:: --email -The username and e-mail address for the new account can be supplied by +The username and email address for the new account can be supplied by using the ``--username`` and ``--email`` arguments on the command line. If either of those is not supplied, ``createsuperuser`` will prompt for it when running interactively. diff --git a/docs/ref/forms/api.txt b/docs/ref/forms/api.txt index 81544ca2b5a..bd8948cc085 100644 --- a/docs/ref/forms/api.txt +++ b/docs/ref/forms/api.txt @@ -89,11 +89,11 @@ and return a boolean designating whether the data was valid:: Let's try with some invalid data. In this case, ``subject`` is blank (an error, because all fields are required by default) and ``sender`` is not a valid -e-mail address:: +email address:: >>> data = {'subject': '', ... 'message': 'Hi there', - ... 'sender': 'invalid e-mail address', + ... 'sender': 'invalid email address', ... 'cc_myself': True} >>> f = ContactForm(data) >>> f.is_valid() @@ -105,7 +105,7 @@ Access the :attr:`~Form.errors` attribute to get a dictionary of error messages:: >>> f.errors - {'sender': [u'Enter a valid e-mail address.'], 'subject': [u'This field is required.']} + {'sender': [u'Enter a valid email address.'], 'subject': [u'This field is required.']} In this dictionary, the keys are the field names, and the values are lists of Unicode strings representing the error messages. The error messages are stored @@ -204,7 +204,7 @@ If your data does *not* validate, your ``Form`` instance will not have a >>> data = {'subject': '', ... 'message': 'Hi there', - ... 'sender': 'invalid e-mail address', + ... 'sender': 'invalid email address', ... 'cc_myself': True} >>> f = ContactForm(data) >>> f.is_valid() @@ -531,25 +531,25 @@ method you're using:: >>> data = {'subject': '', ... 'message': 'Hi there', - ... 'sender': 'invalid e-mail address', + ... 'sender': 'invalid email address', ... 'cc_myself': True} >>> f = ContactForm(data, auto_id=False) >>> print f.as_table() Subject:
  • This field is required.
Message: - Sender:
  • Enter a valid e-mail address.
+ Sender:
  • Enter a valid email address.
Cc myself: >>> print f.as_ul()
    • This field is required.
    Subject:
  • Message:
  • -
    • Enter a valid e-mail address.
    Sender:
  • +
    • Enter a valid email address.
    Sender:
  • Cc myself:
  • >>> print f.as_p()

    • This field is required.

    Subject:

    Message:

    -

    • Enter a valid e-mail address.

    -

    Sender:

    +

    • Enter a valid email address.

    +

    Sender:

    Cc myself:

    Customizing the error list format @@ -571,8 +571,8 @@ pass that in at construction time::
    This field is required.

    Subject:

    Message:

    -
    Enter a valid e-mail address.
    -

    Sender:

    +
    Enter a valid email address.
    +

    Sender:

    Cc myself:

    More granular output diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt index b49864f7cfe..73d8b02869f 100644 --- a/docs/ref/forms/fields.txt +++ b/docs/ref/forms/fields.txt @@ -27,10 +27,10 @@ exception or returns the clean value:: u'foo@example.com' >>> f.clean(u'foo@example.com') u'foo@example.com' - >>> f.clean('invalid e-mail address') + >>> f.clean('invalid email address') Traceback (most recent call last): ... - ValidationError: [u'Enter a valid e-mail address.'] + ValidationError: [u'Enter a valid email address.'] Core field arguments -------------------- @@ -208,23 +208,23 @@ fields. We've specified ``auto_id=False`` to simplify the output:: >>> class HelpTextContactForm(forms.Form): ... subject = forms.CharField(max_length=100, help_text='100 characters max.') ... message = forms.CharField() - ... sender = forms.EmailField(help_text='A valid e-mail address, please.') + ... sender = forms.EmailField(help_text='A valid email address, please.') ... cc_myself = forms.BooleanField(required=False) >>> f = HelpTextContactForm(auto_id=False) >>> print f.as_table() Subject:
    100 characters max. Message: - Sender:
    A valid e-mail address, please. + Sender:
    A valid email address, please. Cc myself: >>> print f.as_ul()
  • Subject: 100 characters max.
  • Message:
  • -
  • Sender: A valid e-mail address, please.
  • +
  • Sender: A valid email address, please.
  • Cc myself:
  • >>> print f.as_p()

    Subject: 100 characters max.

    Message:

    -

    Sender: A valid e-mail address, please.

    +

    Sender: A valid email address, please.

    Cc myself:

    ``error_messages`` @@ -481,7 +481,7 @@ Takes four optional arguments: * Default widget: ``TextInput`` * Empty value: ``''`` (an empty string) * Normalizes to: A Unicode object. - * Validates that the given value is a valid e-mail address, using a + * Validates that the given value is a valid email address, using a moderately complex regular expression. * Error message keys: ``required``, ``invalid`` @@ -490,7 +490,7 @@ If provided, these arguments ensure that the string is at most or at least the given length. .. versionchanged:: 1.2 - The EmailField previously did not recognize e-mail addresses as valid that + The EmailField previously did not recognize email addresses as valid that contained an IDN (Internationalized Domain Name; a domain containing unicode characters) domain part. This has now been corrected. diff --git a/docs/ref/forms/validation.txt b/docs/ref/forms/validation.txt index d5f40706a19..d8f896deb25 100644 --- a/docs/ref/forms/validation.txt +++ b/docs/ref/forms/validation.txt @@ -77,7 +77,7 @@ overridden: * The Form subclass's ``clean()`` method. This method can perform any validation that requires access to multiple fields from the form at once. This is where you might put in things to check that if field ``A`` - is supplied, field ``B`` must contain a valid e-mail address and the + is supplied, field ``B`` must contain a valid email address and the like. The data that this method returns is the final ``cleaned_data`` attribute for the form, so don't forget to return the full list of cleaned data if you override this method (by default, ``Form.clean()`` @@ -187,12 +187,12 @@ a look at Django's ``EmailField``:: class EmailField(CharField): default_error_messages = { - 'invalid': _(u'Enter a valid e-mail address.'), + 'invalid': _(u'Enter a valid email address.'), } default_validators = [validators.validate_email] As you can see, ``EmailField`` is just a ``CharField`` with customized error -message and a validator that validates e-mail addresses. This can also be done +message and a validator that validates email addresses. This can also be done on field definition so:: email = forms.EmailField() @@ -200,14 +200,14 @@ on field definition so:: is equivalent to:: email = forms.CharField(validators=[validators.validate_email], - error_messages={'invalid': _(u'Enter a valid e-mail address.')}) + error_messages={'invalid': _(u'Enter a valid email address.')}) Form field default cleaning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Let's firstly create a custom form field that validates its input is a string -containing comma-separated e-mail addresses. The full class looks like this:: +containing comma-separated email addresses. The full class looks like this:: from django import forms from django.core.validators import validate_email diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index 66bd04791bb..fbd9fb78f8e 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -469,7 +469,7 @@ The admin represents this as an ```` (a single-line input). .. class:: EmailField([max_length=75, **options]) -A :class:`CharField` that checks that the value is a valid e-mail address. +A :class:`CharField` that checks that the value is a valid email address. ``FileField`` ------------- diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt index 8bf0a4e8d00..325b009fe46 100644 --- a/docs/ref/settings.txt +++ b/docs/ref/settings.txt @@ -66,13 +66,13 @@ ADMINS Default: ``()`` (Empty tuple) A tuple that lists people who get code error notifications. When -``DEBUG=False`` and a view raises an exception, Django will e-mail these people +``DEBUG=False`` and a view raises an exception, Django will email these people with the full exception information. Each member of the tuple should be a tuple -of (Full name, e-mail address). Example:: +of (Full name, email address). Example:: (('John', 'john@example.com'), ('Mary', 'mary@example.com')) -Note that Django will e-mail *all* of these people whenever an error happens. +Note that Django will email *all* of these people whenever an error happens. See :doc:`/howto/error-reporting` for more information. .. setting:: ALLOWED_INCLUDE_ROOTS @@ -756,7 +756,7 @@ DEFAULT_FROM_EMAIL Default: ``'webmaster@localhost'`` -Default e-mail address to use for various automated correspondence from the +Default email address to use for various automated correspondence from the site manager(s). .. setting:: DEFAULT_INDEX_TABLESPACE @@ -821,7 +821,7 @@ EMAIL_HOST Default: ``'localhost'`` -The host to use for sending e-mail. +The host to use for sending email. See also ``EMAIL_PORT``. @@ -867,7 +867,7 @@ EMAIL_SUBJECT_PREFIX Default: ``'[Django] '`` -Subject-line prefix for e-mail messages sent with ``django.core.mail.mail_admins`` +Subject-line prefix for email messages sent with ``django.core.mail.mail_admins`` or ``django.core.mail.mail_managers``. You'll probably want to include the trailing space. @@ -1028,7 +1028,7 @@ IGNORABLE_404_ENDS Default: ``('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')`` -See also ``IGNORABLE_404_STARTS`` and ``Error reporting via e-mail``. +See also ``IGNORABLE_404_STARTS`` and ``Error reporting via email``. .. setting:: IGNORABLE_404_STARTS @@ -1038,7 +1038,7 @@ IGNORABLE_404_STARTS Default: ``('/cgi-bin/', '/_vti_bin', '/_vti_inf')`` A tuple of strings that specify beginnings of URLs that should be ignored by -the 404 e-mailer. See ``SEND_BROKEN_LINK_EMAILS``, ``IGNORABLE_404_ENDS`` and +the 404 emailer. See ``SEND_BROKEN_LINK_EMAILS``, ``IGNORABLE_404_ENDS`` and the :doc:`/howto/error-reporting`. .. setting:: INSTALLED_APPS @@ -1433,7 +1433,7 @@ SEND_BROKEN_LINK_EMAILS Default: ``False`` -Whether to send an e-mail to the ``MANAGERS`` each time somebody visits a +Whether to send an email to the ``MANAGERS`` each time somebody visits a Django-powered page that is 404ed with a non-empty referer (i.e., a broken link). This is only used if ``CommonMiddleware`` is installed (see :doc:`/topics/http/middleware`. See also ``IGNORABLE_404_STARTS``, @@ -1459,7 +1459,7 @@ SERVER_EMAIL Default: ``'root@localhost'`` -The e-mail address that error messages come from, such as those sent to +The email address that error messages come from, such as those sent to ``ADMINS`` and ``MANAGERS``. .. setting:: SESSION_COOKIE_AGE diff --git a/docs/ref/unicode.txt b/docs/ref/unicode.txt index c84347844be..bd11d2a4b85 100644 --- a/docs/ref/unicode.txt +++ b/docs/ref/unicode.txt @@ -61,7 +61,7 @@ passing them around at will, because ASCII is a subset of UTF-8. Don't be fooled into thinking that if your :setting:`DEFAULT_CHARSET` setting is set to something other than ``'utf-8'`` you can use that other encoding in your bytestrings! :setting:`DEFAULT_CHARSET` only applies to the strings generated as -the result of template rendering (and e-mail). Django will always assume UTF-8 +the result of template rendering (and email). Django will always assume UTF-8 encoding for internal bytestrings. The reason for this is that the :setting:`DEFAULT_CHARSET` setting is not actually under your control (if you are the application developer). It's under the control of the person installing and @@ -304,16 +304,16 @@ A couple of tips to remember when writing your own template tags and filters: translation objects into strings. It's easier to work solely with Unicode strings at that point. -E-mail +Email ====== -Django's e-mail framework (in ``django.core.mail``) supports Unicode +Django's email framework (in ``django.core.mail``) supports Unicode transparently. You can use Unicode data in the message bodies and any headers. -However, you're still obligated to respect the requirements of the e-mail -specifications, so, for example, e-mail addresses should use only ASCII +However, you're still obligated to respect the requirements of the email +specifications, so, for example, email addresses should use only ASCII characters. -The following code example demonstrates that everything except e-mail addresses +The following code example demonstrates that everything except email addresses can be non-ASCII:: from django.core.mail import EmailMessage diff --git a/docs/ref/validators.txt b/docs/ref/validators.txt index 0451f65dc06..472fd62a8c3 100644 --- a/docs/ref/validators.txt +++ b/docs/ref/validators.txt @@ -106,7 +106,7 @@ to, or in lieu of custom ``field.clean()`` methods. .. data:: validate_email A :class:`RegexValidator` instance that ensures a value looks like an - e-mail address. + email address. ``validate_slug`` ----------------- diff --git a/docs/releases/1.2-alpha-1.txt b/docs/releases/1.2-alpha-1.txt index 4144a9a3a93..9fbee33615e 100644 --- a/docs/releases/1.2-alpha-1.txt +++ b/docs/releases/1.2-alpha-1.txt @@ -202,7 +202,7 @@ deprecated, as described in the :ref:`upgrading notes ------------------ The ``SMTPConnection`` class has been deprecated in favor of a generic -E-mail backend API. Old code that explicitly instantiated an instance +Email backend API. Old code that explicitly instantiated an instance of an SMTPConnection:: from django.core.mail import SMTPConnection @@ -211,7 +211,7 @@ of an SMTPConnection:: connection.send_messages(messages) should now call :meth:`~django.core.mail.get_connection()` to -instantiate a generic e-mail connection:: +instantiate a generic email connection:: from django.core.mail import get_connection connection = get_connection() @@ -220,7 +220,7 @@ instantiate a generic e-mail connection:: Depending on the value of the :setting:`EMAIL_BACKEND` setting, this may not return an SMTP connection. If you explicitly require an SMTP -connection with which to send e-mail, you can explicitly request an +connection with which to send email, you can explicitly request an SMTP connection:: from django.core.mail import get_connection @@ -385,23 +385,23 @@ malicious site in their browser. A related type of attack, 'login CSRF', where an attacking site tricks a user's browser into logging into a site with someone else's credentials, is also covered. -E-mail Backends +Email Backends --------------- -You can now :ref:`configure the way that Django sends e-mail -`. Instead of using SMTP to send all e-mail, you -can now choose a configurable e-mail backend to send messages. If your +You can now :ref:`configure the way that Django sends email +`. Instead of using SMTP to send all email, you +can now choose a configurable email backend to send messages. If your hosting provider uses a sandbox or some other non-SMTP technique for -sending mail, you can now construct an e-mail backend that will allow +sending mail, you can now construct an email backend that will allow Django's standard :doc:`mail sending methods` to use those facilities. This also makes it easier to debug mail sending - Django ships with -backend implementations that allow you to send e-mail to a +backend implementations that allow you to send email to a :ref:`file`, to the :ref:`console`, or to :ref:`memory` - you can even configure all -e-mail to be :ref:`thrown away`. +email to be :ref:`thrown away`. Messages Framework ------------------ diff --git a/docs/releases/1.2.txt b/docs/releases/1.2.txt index 31ed59a9c1d..6fef17596fb 100644 --- a/docs/releases/1.2.txt +++ b/docs/releases/1.2.txt @@ -30,7 +30,7 @@ Django 1.2 introduces several large, important new features, including: * Hooks for `object-level permissions`_, `permissions for anonymous users`_, and `more flexible username requirements`_. - * Customization of e-mail sending via `e-mail backends`_. + * Customization of email sending via `email backends`_. * New :ref:`"smart" if template tag ` which supports comparison operators. @@ -184,23 +184,23 @@ The built-in :class:`~django.contrib.auth.models.User` model's :attr:`~django.contrib.auth.models.User.username` field now allows a wider range of characters, including ``@``, ``+``, ``.`` and ``-`` characters. -E-mail backends +Email backends --------------- -You can now :ref:`configure the way that Django sends e-mail -`. Instead of using SMTP to send all e-mail, you -can now choose a configurable e-mail backend to send messages. If your +You can now :ref:`configure the way that Django sends email +`. Instead of using SMTP to send all email, you +can now choose a configurable email backend to send messages. If your hosting provider uses a sandbox or some other non-SMTP technique for -sending mail, you can now construct an e-mail backend that will allow +sending mail, you can now construct an email backend that will allow Django's standard :doc:`mail sending methods` to use those facilities. This also makes it easier to debug mail sending. Django ships with -backend implementations that allow you to send e-mail to a +backend implementations that allow you to send email to a :ref:`file`, to the :ref:`console`, or to :ref:`memory`. You can even configure all -e-mail to be :ref:`thrown away`. +email to be :ref:`thrown away`. .. _new-in-1.2-smart-if: @@ -868,7 +868,7 @@ imports are deprecated, as described in the :ref:`upgrading notes ------------------ The ``SMTPConnection`` class has been deprecated in favor of a generic -e-mail backend API. Old code that explicitly instantiated an instance +email backend API. Old code that explicitly instantiated an instance of an SMTPConnection:: from django.core.mail import SMTPConnection @@ -877,7 +877,7 @@ of an SMTPConnection:: connection.send_messages(messages) ...should now call :meth:`~django.core.mail.get_connection()` to -instantiate a generic e-mail connection:: +instantiate a generic email connection:: from django.core.mail import get_connection connection = get_connection() @@ -886,7 +886,7 @@ instantiate a generic e-mail connection:: Depending on the value of the :setting:`EMAIL_BACKEND` setting, this may not return an SMTP connection. If you explicitly require an SMTP -connection with which to send e-mail, you can explicitly request an +connection with which to send email, you can explicitly request an SMTP connection:: from django.core.mail import get_connection diff --git a/docs/topics/auth.txt b/docs/topics/auth.txt index 52ddf22e7ba..4a8d63f62b6 100644 --- a/docs/topics/auth.txt +++ b/docs/topics/auth.txt @@ -84,7 +84,7 @@ Fields .. attribute:: models.User.email - Optional. E-mail address. + Optional. Email address. .. attribute:: models.User.password @@ -263,7 +263,7 @@ Methods .. method:: models.User.email_user(subject, message, from_email=None) - Sends an e-mail to the user. If + Sends an email to the user. If :attr:`~django.contrib.auth.models.User.from_email` is ``None``, Django uses the :setting:`DEFAULT_FROM_EMAIL`. @@ -948,7 +948,7 @@ includes a few other useful built-in views located in Allows a user to reset their password by generating a one-time use link that can be used to reset the password, and sending that link to the - user's registered e-mail address. + user's registered email address. .. versionchanged:: 1.3 The ``from_email`` argument was added. @@ -960,7 +960,7 @@ includes a few other useful built-in views located in :file:`registration/password_reset_form.html` if not supplied. * ``email_template_name``: The full name of a template to use for - generating the e-mail with the new password. This will default to + generating the email with the new password. This will default to :file:`registration/password_reset_email.html` if not supplied. * ``password_reset_form``: Form that will be used to set the password. @@ -973,7 +973,7 @@ includes a few other useful built-in views located in * ``post_reset_redirect``: The URL to redirect to after a successful password change. - * ``from_email``: A valid e-mail address. By default Django uses + * ``from_email``: A valid email address. By default Django uses the :setting:`DEFAULT_FROM_EMAIL`. **Template context:** @@ -1061,7 +1061,7 @@ provides several built-in forms located in :mod:`django.contrib.auth.forms`: .. class:: PasswordResetForm - A form for generating and e-mailing a one-time use link to reset a + A form for generating and emailing a one-time use link to reset a user's password. .. class:: SetPasswordForm @@ -1384,7 +1384,7 @@ example, if the group ``Site editors`` has the permission Beyond permissions, groups are a convenient way to categorize users to give them some label, or extended functionality. For example, you could create a group ``'Special users'``, and you could write code that could, say, give them -access to a members-only portion of your site, or send them members-only e-mail +access to a members-only portion of your site, or send them members-only email messages. Messages diff --git a/docs/topics/cache.txt b/docs/topics/cache.txt index 4eb9d215360..ce2eb592eb8 100644 --- a/docs/topics/cache.txt +++ b/docs/topics/cache.txt @@ -941,7 +941,7 @@ Many Web pages' contents differ based on authentication and a host of other variables, and cache systems that blindly save pages based purely on URLs could expose incorrect or sensitive data to subsequent visitors to those pages. -For example, say you operate a Web e-mail system, and the contents of the +For example, say you operate a Web email system, and the contents of the "inbox" page obviously depend on which user is logged in. If an ISP blindly cached your site, then the first user who logged in through that ISP would have his user-specific inbox page cached for subsequent visitors to the site. That's diff --git a/docs/topics/email.txt b/docs/topics/email.txt index ea6212029dd..65c5c7daef9 100644 --- a/docs/topics/email.txt +++ b/docs/topics/email.txt @@ -1,14 +1,14 @@ ============== -Sending e-mail +Sending email ============== .. module:: django.core.mail - :synopsis: Helpers to easily send e-mail. + :synopsis: Helpers to easily send email. -Although Python makes sending e-mail relatively easy via the `smtplib +Although Python makes sending email relatively easy via the `smtplib library`_, Django provides a couple of light wrappers over it. These wrappers -are provided to make sending e-mail extra quick, to make it easy to test -e-mail sending during development, and to provide support for platforms that +are provided to make sending email extra quick, to make it easy to test +email sending during development, and to provide support for platforms that can't use SMTP. The code lives in the ``django.core.mail`` module. @@ -33,7 +33,7 @@ set, are used to authenticate to the SMTP server, and the .. note:: - The character set of e-mail sent with ``django.core.mail`` will be set to + The character set of email sent with ``django.core.mail`` will be set to the value of your :setting:`DEFAULT_CHARSET` setting. send_mail() @@ -41,7 +41,7 @@ send_mail() .. function:: send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None) -The simplest way to send e-mail is using +The simplest way to send email is using ``django.core.mail.send_mail()``. The ``subject``, ``message``, ``from_email`` and ``recipient_list`` parameters @@ -50,9 +50,9 @@ are required. * ``subject``: A string. * ``message``: A string. * ``from_email``: A string. - * ``recipient_list``: A list of strings, each an e-mail address. Each + * ``recipient_list``: A list of strings, each an email address. Each member of ``recipient_list`` will see the other recipients in the "To:" - field of the e-mail message. + field of the email message. * ``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``. @@ -62,9 +62,9 @@ are required. * ``auth_password``: The optional password to use to authenticate to the SMTP server. If this isn't provided, Django will use the value of the :setting:`EMAIL_HOST_PASSWORD` setting. - * ``connection``: The optional e-mail backend to use to send the mail. + * ``connection``: The optional email backend to use to send the mail. If unspecified, an instance of the default backend will be used. - See the documentation on :ref:`E-mail backends ` + See the documentation on :ref:`Email backends ` for more details. .. _smtplib docs: http://docs.python.org/library/smtplib.html @@ -74,7 +74,7 @@ send_mass_mail() .. function:: send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None) -``django.core.mail.send_mass_mail()`` is intended to handle mass e-mailing. +``django.core.mail.send_mass_mail()`` is intended to handle mass emailing. ``datatuple`` is a tuple in which each element is in this format:: @@ -83,9 +83,9 @@ send_mass_mail() ``fail_silently``, ``auth_user`` and ``auth_password`` have the same functions as in :meth:`~django.core.mail.send_mail()`. -Each separate element of ``datatuple`` results in a separate e-mail message. +Each separate element of ``datatuple`` results in a separate email message. As in :meth:`~django.core.mail.send_mail()`, recipients in the same -``recipient_list`` will all see the other addresses in the e-mail messages' +``recipient_list`` will all see the other addresses in the email messages' "To:" field. For example, the following code would send two different messages to @@ -111,21 +111,21 @@ mail_admins() .. function:: mail_admins(subject, message, fail_silently=False, connection=None, html_message=None) -``django.core.mail.mail_admins()`` is a shortcut for sending an e-mail to the +``django.core.mail.mail_admins()`` is a shortcut for sending an email to the site admins, as defined in the :setting:`ADMINS` setting. ``mail_admins()`` prefixes the subject with the value of the :setting:`EMAIL_SUBJECT_PREFIX` setting, which is ``"[Django] "`` by default. -The "From:" header of the e-mail will be the value of the +The "From:" header of the email will be the value of the :setting:`SERVER_EMAIL` setting. This method exists for convenience and readability. .. versionchanged:: 1.3 -If ``html_message`` is provided, the resulting e-mail will be a -multipart/alternative e-mail with ``message`` as the "text/plain" +If ``html_message`` is provided, the resulting email will be a +multipart/alternative email with ``message`` as the "text/plain" content type and ``html_message`` as the "text/html" content type. mail_managers() @@ -134,20 +134,20 @@ mail_managers() .. function:: mail_managers(subject, message, fail_silently=False, connection=None, html_message=None) ``django.core.mail.mail_managers()`` is just like ``mail_admins()``, except it -sends an e-mail to the site managers, as defined in the :setting:`MANAGERS` +sends an email to the site managers, as defined in the :setting:`MANAGERS` setting. Examples ======== -This sends a single e-mail to john@example.com and jane@example.com, with them +This sends a single email to john@example.com and jane@example.com, with them both appearing in the "To:":: send_mail('Subject', 'Message.', 'from@example.com', ['john@example.com', 'jane@example.com']) This sends a message to john@example.com and jane@example.com, with them both -receiving a separate e-mail:: +receiving a separate email:: datatuple = ( ('Subject', 'Message.', 'from@example.com', ['john@example.com']), @@ -159,19 +159,19 @@ Preventing header injection =========================== `Header injection`_ is a security exploit in which an attacker inserts extra -e-mail headers to control the "To:" and "From:" in e-mail messages that your +email headers to control the "To:" and "From:" in email messages that your scripts generate. -The Django e-mail functions outlined above all protect against header injection +The Django email functions outlined above all protect against header injection by forbidding newlines in header values. If any ``subject``, ``from_email`` or ``recipient_list`` contains a newline (in either Unix, Windows or Mac style), -the e-mail function (e.g. :meth:`~django.core.mail.send_mail()`) will raise +the email function (e.g. :meth:`~django.core.mail.send_mail()`) will raise ``django.core.mail.BadHeaderError`` (a subclass of ``ValueError``) and, hence, -will not send the e-mail. It's your responsibility to validate all data before -passing it to the e-mail functions. +will not send the email. It's your responsibility to validate all data before +passing it to the email functions. If a ``message`` contains headers at the start of the string, the headers will -simply be printed as the first bit of the e-mail message. +simply be printed as the first bit of the email message. Here's an example view that takes a ``subject``, ``message`` and ``from_email`` from the request's POST data, sends that to admin@example.com and redirects to @@ -208,24 +208,24 @@ wrappers that make use of the :class:`~django.core.mail.EmailMessage` class. Not all features of the :class:`~django.core.mail.EmailMessage` class are available through the :meth:`~django.core.mail.send_mail()` and related wrapper functions. If you wish to use advanced features, such as BCC'ed -recipients, file attachments, or multi-part e-mail, you'll need to create +recipients, file attachments, or multi-part email, you'll need to create :class:`~django.core.mail.EmailMessage` instances directly. .. note:: This is a design feature. :meth:`~django.core.mail.send_mail()` and related functions were originally the only interface Django provided. However, the list of parameters they accepted was slowly growing over - time. It made sense to move to a more object-oriented design for e-mail + time. It made sense to move to a more object-oriented design for email messages and retain the original functions only for backwards compatibility. -:class:`~django.core.mail.EmailMessage` is responsible for creating the e-mail -message itself. The :ref:`e-mail backend ` is then -responsible for sending the e-mail. +:class:`~django.core.mail.EmailMessage` is responsible for creating the email +message itself. The :ref:`email backend ` is then +responsible for sending the email. For convenience, :class:`~django.core.mail.EmailMessage` provides a simple -``send()`` method for sending a single e-mail. If you need to send multiple -messages, the e-mail backend API :ref:`provides an alternative +``send()`` method for sending a single email. If you need to send multiple +messages, the email backend API :ref:`provides an alternative `. EmailMessage Objects @@ -241,7 +241,7 @@ All parameters are optional and can be set at any time prior to calling the .. versionchanged:: 1.3 The ``cc`` argument was added. - * ``subject``: The subject line of the e-mail. + * ``subject``: The subject line of the email. * ``body``: The body text. This should be a plain text message. @@ -252,9 +252,9 @@ All parameters are optional and can be set at any time prior to calling the * ``to``: A list or tuple of recipient addresses. * ``bcc``: A list or tuple of addresses used in the "Bcc" header when - sending the e-mail. + sending the email. - * ``connection``: An e-mail backend instance. Use this parameter if + * ``connection``: An email backend instance. Use this parameter if you want to use the same connection for multiple messages. If omitted, a new connection is created when ``send()`` is called. @@ -265,10 +265,10 @@ All parameters are optional and can be set at any time prior to calling the * ``headers``: A dictionary of extra headers to put on the message. The keys are the header name, values are the header values. It's up to the caller to ensure header names and values are in the correct format for - an e-mail message. + an email message. * ``cc``: A list or tuple of recipient addresses used in the "Cc" header - when sending the e-mail. + when sending the email. For example:: @@ -279,7 +279,7 @@ For example:: The class has the following methods: * ``send(fail_silently=False)`` sends the message. If a connection was - specified when the e-mail was constructed, that connection will be used. + specified when the email was constructed, that connection will be used. Otherwise, an instance of the default backend will be instantiated and used. If the keyword argument ``fail_silently`` is ``True``, exceptions raised while sending the message will be quashed. @@ -307,7 +307,7 @@ The class has the following methods: * Alternatively, you can pass ``attach()`` three arguments: ``filename``, ``content`` and ``mimetype``. ``filename`` is the name - of the file attachment as it will appear in the e-mail, ``content`` is + of the file attachment as it will appear in the email, ``content`` is the data that will be contained inside the attachment and ``mimetype`` is the optional MIME type for the attachment. If you omit ``mimetype``, the MIME content type will be guessed from the @@ -329,12 +329,12 @@ The class has the following methods: Sending alternative content types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It can be useful to include multiple versions of the content in an e-mail; the +It can be useful to include multiple versions of the content in an email; the classic example is to send both text and HTML versions of a message. With -Django's e-mail library, you can do this using the ``EmailMultiAlternatives`` +Django's email library, you can do this using the ``EmailMultiAlternatives`` class. This subclass of :class:`~django.core.mail.EmailMessage` has an ``attach_alternative()`` method for including extra versions of the message -body in the e-mail. All the other methods (including the class initialization) +body in the email. All the other methods (including the class initialization) are inherited directly from :class:`~django.core.mail.EmailMessage`. To send a text and HTML combination, you could write:: @@ -351,7 +351,7 @@ To send a text and HTML combination, you could write:: By default, the MIME type of the ``body`` parameter in an :class:`~django.core.mail.EmailMessage` is ``"text/plain"``. It is good practice to leave this alone, because it guarantees that any recipient will be -able to read the e-mail, regardless of their mail client. However, if you are +able to read the email, regardless of their mail client. However, if you are confident that your recipients can handle an alternative content type, you can use the ``content_subtype`` attribute on the :class:`~django.core.mail.EmailMessage` class to change the main content type. @@ -369,13 +369,13 @@ E-Mail Backends .. versionadded:: 1.2 -The actual sending of an e-mail is handled by the e-mail backend. +The actual sending of an email is handled by the email backend. -The e-mail backend class has the following methods: +The email backend class has the following methods: - * ``open()`` instantiates an long-lived e-mail-sending connection. + * ``open()`` instantiates an long-lived email-sending connection. - * ``close()`` closes the current e-mail-sending connection. + * ``close()`` closes the current email-sending connection. * ``send_messages(email_messages)`` sends a list of :class:`~django.core.mail.EmailMessage` objects. If the connection is @@ -383,38 +383,38 @@ The e-mail backend class has the following methods: connection afterwards. If the connection is already open, it will be left open after mail has been sent. -Obtaining an instance of an e-mail backend +Obtaining an instance of an email backend ------------------------------------------ The :meth:`get_connection` function in ``django.core.mail`` returns an -instance of the e-mail backend that you can use. +instance of the email backend that you can use. .. currentmodule:: django.core.mail .. function:: get_connection(backend=None, fail_silently=False, *args, **kwargs) By default, a call to ``get_connection()`` will return an instance of the -e-mail backend specified in :setting:`EMAIL_BACKEND`. If you specify the +email backend specified in :setting:`EMAIL_BACKEND`. If you specify the ``backend`` argument, an instance of that backend will be instantiated. The ``fail_silently`` argument controls how the backend should handle errors. -If ``fail_silently`` is True, exceptions during the e-mail sending process +If ``fail_silently`` is True, exceptions during the email sending process will be silently ignored. All other arguments are passed directly to the constructor of the -e-mail backend. +email backend. -Django ships with several e-mail sending backends. With the exception of the +Django ships with several email sending backends. With the exception of the SMTP backend (which is the default), these backends are only useful during -testing and development. If you have special e-mail sending requirements, you -can :ref:`write your own e-mail backend `. +testing and development. If you have special email sending requirements, you +can :ref:`write your own email backend `. .. _topic-email-smtp-backend: SMTP backend ~~~~~~~~~~~~ -This is the default backend. E-mail will be sent through a SMTP server. +This is the default backend. Email will be sent through a SMTP server. The server address and authentication credentials are set in the :setting:`EMAIL_HOST`, :setting:`EMAIL_PORT`, :setting:`EMAIL_HOST_USER`, :setting:`EMAIL_HOST_PASSWORD` and :setting:`EMAIL_USE_TLS` settings in your @@ -429,8 +429,8 @@ want to specify it explicitly, put the following in your settings:: Prior to version 1.2, Django provided a :class:`~django.core.mail.SMTPConnection` class. This class provided a way - to directly control the use of SMTP to send e-mail. This class has been - deprecated in favor of the generic e-mail backend API. + to directly control the use of SMTP to send email. This class has been + deprecated in favor of the generic email backend API. For backwards compatibility :class:`~django.core.mail.SMTPConnection` is still available in ``django.core.mail`` as an alias for the SMTP backend. @@ -441,8 +441,8 @@ want to specify it explicitly, put the following in your settings:: Console backend ~~~~~~~~~~~~~~~ -Instead of sending out real e-mails the console backend just writes the -e-mails that would be send to the standard output. By default, the console +Instead of sending out real emails the console backend just writes the +emails that would be send to the standard output. By default, the console backend writes to ``stdout``. You can use a different stream-like object by providing the ``stream`` keyword argument when constructing the connection. @@ -458,7 +458,7 @@ convenience that can be used during development. File backend ~~~~~~~~~~~~ -The file backend writes e-mails to a file. A new file is created for each new +The file backend writes emails to a file. A new file is created for each new session that is opened on this backend. The directory to which the files are written is either taken from the :setting:`EMAIL_FILE_PATH` setting or from the ``file_path`` keyword when creating a connection with @@ -505,15 +505,15 @@ convenience that can be used during development. .. _topic-custom-email-backend: -Defining a custom e-mail backend +Defining a custom email backend -------------------------------- -If you need to change how e-mails are sent you can write your own e-mail +If you need to change how emails are sent you can write your own email backend. The ``EMAIL_BACKEND`` setting in your settings file is then the Python import path for your backend class. -Custom e-mail backends should subclass ``BaseEmailBackend`` that is located in -the ``django.core.mail.backends.base`` module. A custom e-mail backend must +Custom email backends should subclass ``BaseEmailBackend`` that is located in +the ``django.core.mail.backends.base`` module. A custom email backend must implement the ``send_messages(email_messages)`` method. This method receives a list of :class:`~django.core.mail.EmailMessage` instances and returns the number of successfully delivered messages. If your backend has any concept of @@ -523,15 +523,15 @@ implementation. .. _topics-sending-multiple-emails: -Sending multiple e-mails +Sending multiple emails ------------------------ Establishing and closing an SMTP connection (or any other network connection, -for that matter) is an expensive process. If you have a lot of e-mails to send, +for that matter) is an expensive process. If you have a lot of emails to send, it makes sense to reuse an SMTP connection, rather than creating and -destroying a connection every time you want to send an e-mail. +destroying a connection every time you want to send an email. -There are two ways you tell an e-mail backend to reuse a connection. +There are two ways you tell an email backend to reuse a connection. Firstly, you can use the ``send_messages()`` method. ``send_messages()`` takes a list of :class:`~django.core.mail.EmailMessage` instances (or subclasses), @@ -539,11 +539,11 @@ and sends them all using a single connection. For example, if you have a function called ``get_notification_email()`` that returns a list of :class:`~django.core.mail.EmailMessage` objects representing -some periodic e-mail you wish to send out, you could send these e-mails using +some periodic email you wish to send out, you could send these emails using a single call to send_messages:: from django.core import mail - connection = mail.get_connection() # Use default e-mail connection + connection = mail.get_connection() # Use default email connection messages = get_notification_email() connection.send_messages(messages) @@ -551,7 +551,7 @@ In this example, the call to ``send_messages()`` opens a connection on the backend, sends the list of messages, and then closes the connection again. The second approach is to use the ``open()`` and ``close()`` methods on the -e-mail backend to manually control the connection. ``send_messages()`` will not +email backend to manually control the connection. ``send_messages()`` will not manually open or close the connection if it is already open, so if you manually open the connection, you can control when it is closed. For example:: @@ -561,10 +561,10 @@ manually open the connection, you can control when it is closed. For example:: # Manually open the connection connection.open() - # Construct an e-mail message that uses the connection + # Construct an email message that uses the connection email1 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com', ['to1@example.com'], connection=connection) - email1.send() # Send the e-mail + email1.send() # Send the email # Construct two more messages email2 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com', @@ -572,42 +572,42 @@ manually open the connection, you can control when it is closed. For example:: email3 = mail.EmailMessage('Hello', 'Body goes here', 'from@example.com', ['to3@example.com']) - # Send the two e-mails in a single call - + # Send the two emails in a single call - connection.send_messages([email2, email3]) # The connection was already open so send_messages() doesn't close it. # We need to manually close the connection. connection.close() -Testing e-mail sending +Testing email sending ====================== -There are times when you do not want Django to send e-mails at +There are times when you do not want Django to send emails at all. For example, while developing a Web site, you probably don't want -to send out thousands of e-mails -- but you may want to validate that -e-mails will be sent to the right people under the right conditions, -and that those e-mails will contain the correct content. +to send out thousands of emails -- but you may want to validate that +emails will be sent to the right people under the right conditions, +and that those emails will contain the correct content. -The easiest way to test your project's use of e-mail is to use the ``console`` -e-mail backend. This backend redirects all e-mail to stdout, allowing you to +The easiest way to test your project's use of email is to use the ``console`` +email backend. This backend redirects all email to stdout, allowing you to inspect the content of mail. -The ``file`` e-mail backend can also be useful during development -- this backend +The ``file`` email backend can also be useful during development -- this backend dumps the contents of every SMTP connection to a file that can be inspected at your leisure. -Another approach is to use a "dumb" SMTP server that receives the e-mails +Another approach is to use a "dumb" SMTP server that receives the emails locally and displays them to the terminal, but does not actually send anything. Python has a built-in way to accomplish this with a single command:: python -m smtpd -n -c DebuggingServer localhost:1025 This command will start a simple SMTP server listening on port 1025 of -localhost. This server simply prints to standard output all e-mail headers and -the e-mail body. You then only need to set the :setting:`EMAIL_HOST` and +localhost. This server simply prints to standard output all email headers and +the email body. You then only need to set the :setting:`EMAIL_HOST` and :setting:`EMAIL_PORT` accordingly, and you are set. -For a more detailed discussion of testing and processing of e-mails locally, +For a more detailed discussion of testing and processing of emails locally, see the Python documentation on the `SMTP Server`_. .. _SMTP Server: http://docs.python.org/library/smtpd.html @@ -619,7 +619,7 @@ SMTPConnection .. deprecated:: 1.2 -The ``SMTPConnection`` class has been deprecated in favor of the generic e-mail +The ``SMTPConnection`` class has been deprecated in favor of the generic email backend API. For backwards compatibility ``SMTPConnection`` is still available in diff --git a/docs/topics/forms/index.txt b/docs/topics/forms/index.txt index f9aa9170639..234417bf00c 100644 --- a/docs/topics/forms/index.txt +++ b/docs/topics/forms/index.txt @@ -36,7 +36,7 @@ The library deals with these concepts: Field A class that is responsible for doing validation, e.g. - an ``EmailField`` that makes sure its data is a valid e-mail address. + an ``EmailField`` that makes sure its data is a valid email address. Form A collection of fields that knows how to validate itself and @@ -163,7 +163,7 @@ Extending the above example, here's how the form data could be processed: send_mail(subject, message, sender, recipients) return HttpResponseRedirect('/thanks/') # Redirect after POST -For more on sending e-mail from Django, see :doc:`/topics/email`. +For more on sending email from Django, see :doc:`/topics/email`. Displaying a form using a template ---------------------------------- @@ -224,7 +224,7 @@ above example:: {{ form.non_field_errors }}
    {{ form.subject.errors }} - + {{ form.subject }}
    @@ -288,11 +288,11 @@ Within this loop, ``{{ field }}`` is an instance of :class:`BoundField`. templates: ``{{ field.label }}`` - The label of the field, e.g. ``E-mail address``. + The label of the field, e.g. ``Email address``. ``{{ field.label_tag }}`` The field's label wrapped in the appropriate HTML ``