app/soc/logic/mail_dispatcher.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sat, 28 Feb 2009 10:39:23 +0000
changeset 1551 78c6c14c6b63
parent 1550 a872030dc3ca
child 1560 656aace0b15f
permissions -rw-r--r--
Fixed sending out email when no-reply is not set. (Puts a brown paper bag on his head and runs!) Patch by: Lennard de Rijk Reviewed by: to-be-reviewed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     2
#
1308
35b75ffcbb37 Partially reverted "Update the copyright notice for 2009."
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1307
diff changeset
     3
# Copyright 2008 the Melange authors.
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     4
#
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     8
#
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    10
#
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    16
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    17
"""Functions used to send email messages.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    18
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    19
The following are the possible fields of an email message:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    20
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    21
  sender: The email address of the sender, the From address. This must be the
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    22
    email address of a registered administrator for the application, or the
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    23
    address of the current signed-in user. Administrators can be added to
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    24
    an application using the Administration Console. The current user's email
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    25
    address can be determined with the Users API.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    26
  to: A recipient's email address (a string) or a list of email addresses to
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    27
    appear on the To: line in the message header.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    28
  cc: A recipient's email address (a string) or a list of email addresses to
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    29
    appear on the Cc: line in the message header.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    30
  bcc: A recipient's email address (a string) or a list of email addresses to
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    31
    receive the message, but not appear in the message header ("blind carbon
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    32
    copy").
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    33
  reply_to: An email address to which a recipient should reply instead of the
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    34
    sender address, the Reply-To: field.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    35
  subject: The subject of the message, the Subject: line.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    36
  body: The plaintext body content of the message.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    37
  html: An HTML version of the body content, for recipients that
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    38
    prefer HTML email.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    39
  attachments: The file attachments for the message, as a list of two-value
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    40
    tuples, one tuple for each attachment. Each tuple contains a filename as
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    41
    the first element, and the file contents as the second element.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    42
    An attachment file must be one of the allowed file types, and the
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    43
    filename must end with an extension that corresponds with the type.
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    44
    For a list of allowed types and filename extensions, see Allowed
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    45
    Attachment Types.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    46
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    47
Usage:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    48
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    49
  context = { 'sender': 'melange-noreply@example.com',
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    50
              'to': 'test@example.com',
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    51
              'subject': 'You have been invited to become a Host',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    52
              'sender_name': 'Alice',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    53
              'to_name': 'Melange Team',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    54
              'role': 'Host',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    55
              'group': 'Google Summer of Code 2009',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    56
              'invitation_url': 'http://invitation-url'}
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    57
607
7e560d8cc035 Fixed typo in docstring.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 509
diff changeset
    58
  sendMailFromTemplate('soc/mail/invitation.html', context)
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    59
"""
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    60
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    61
__authors__ = [
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    62
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    63
  '"Pawel Solyga" <pawel.solyga@gmail.com',
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    64
  ]
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    65
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    66
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    67
from django.template import loader
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    68
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    69
from google.appengine.api import mail
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    70
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    71
from soc.logic import dicts
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    72
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    73
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    74
def sendMailFromTemplate(template, context):
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    75
  """Sends out an email using a Django template.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    76
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    77
  If 'html' is present in context dictionary it is overwritten with
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    78
  template HTML output.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    79
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    80
  Args:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    81
    template: the template (or search list of templates) to use
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    82
    context: The context supplied to the template and email (dictionary)
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    83
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    84
  Raises:
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    85
    Error that corresponds with the first problem it finds iff the message
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    86
    is not properly initialized.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    87
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    88
    List of all possible errors:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    89
      http://code.google.com/appengine/docs/mail/exceptions.html
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    90
  """
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    91
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    92
  # render the template and put in context with 'html' as key
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    93
  context['html'] = loader.render_to_string(template, dictionary=context)
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    94
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    95
  # filter out the unneeded values in context to keep sendMail happy
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    96
  sendMail(dicts.filter(context, mail.EmailMessage.PROPERTIES))
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    97
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    98
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
    99
def sendMail(context):
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   100
  """Sends out an email using context to supply the needed information.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   101
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   102
  Args:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   103
    context : The context supplied to the email message (dictionary)
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   104
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   105
  Raises:
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   106
    Error that corresponds with the first problem it finds iff the message
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   107
    is not properly initialized.
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   108
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   109
    List of all possible errors:
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   110
      http://code.google.com/appengine/docs/mail/exceptions.html
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   111
  """
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   112
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   113
  # construct the EmailMessage from the given context
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   114
  message = mail.EmailMessage(**context)
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   115
  message.check_initialized()
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   116
484
6364f8b0656b Add an e-mail dispatcher that can be used to send messages via the website. Add base and invitation templates that can be used with email dispatcher to send invitation emails. Please read the module doc string for more information how to use it.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
diff changeset
   117
  # send the message
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   118
  message.send()
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   119
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   120
def getDefaultMailSender():
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   121
  """Returns the sender that currently can be used to send emails.
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   122
  
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   123
  Returns:
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   124
    - A tuple containing (sender_name, sender_address)
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   125
    Consisting of:
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   126
    - If available the site name and noreply address from the site singleton
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   127
    - Or the public name and email address of the current logged in User
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   128
    - None if there is no address to return
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   129
  """
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   130
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   131
  import logging
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   132
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   133
  from soc.logic import accounts
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   134
  from soc.logic.models import user as user_logic
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   135
  from soc.logic.models import site as site_logic
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   136
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   137
  # check if there is a noreply email address set
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   138
  site_entity = site_logic.logic.getSingleton()
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   139
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   140
  if site_entity.noreply_email:
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   141
    return (site_entity.site_name, site_entity.noreply_email)
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   142
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   143
  # use the email address of the current logged in user
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   144
  user_entity = user_logic.logic.getForCurrentAccount()
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   145
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   146
  if not user_entity:
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   147
    logging.warning('Non-Authenticated user triggered getDefaultMailSender')
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   148
    return None
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   149
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   150
  # denormalize the account and retrieve the email
1551
78c6c14c6b63 Fixed sending out email when no-reply is not set.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1550
diff changeset
   151
  sender = accounts.denormalizeAccount(user_entity.account).email()
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   152
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   153
  return (user_entity.name, sender)