app/soc/logic/mail_dispatcher.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 28 Feb 2009 00:10:07 +0000
changeset 1548 15caebd3304d
parent 1545 ce5d37a38091
child 1550 a872030dc3ca
permissions -rw-r--r--
Denormalize accounts before trying to send e-mail Otherwise accounts that are in the auth domain are not a valid e-mail address. Patch by: Sverre Rabbelier
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
1548
15caebd3304d Denormalize accounts before trying to send e-mail
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1545
diff changeset
    71
from soc.logic import accounts
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
    72
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
    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
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
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
    76
  """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
    77
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
    78
  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
    79
  template HTML output.
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    80
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
    81
  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
    82
    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
    83
    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
    84
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
    85
  Raises:
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    86
    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
    87
    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
    88
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
    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
    90
      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
    91
  """
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
    92
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
    93
  # 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
    94
  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
    95
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
  # 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
    97
  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
    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
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
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
   101
  """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
   102
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
   103
  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
   104
    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
   105
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
   106
  Raises:
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   107
    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
   108
    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
   109
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
    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
   111
      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
   112
  """
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   113
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
   114
  # 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
   115
  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
   116
  message.check_initialized()
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   117
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
   118
  # send the message
1449
9d2e46122b36 Fixed whitespace damadge and missing EOL
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   119
  message.send()
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   120
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   121
def getDefaultMailSender():
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   122
  """Returns the email address that currently can be used to send emails.
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   123
  
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   124
  Returns:
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   125
    - If available the noreply email address from the site singleton
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   126
    - Or the email address of the current logged in User
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   127
    - 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
   128
  """
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
  import logging
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   131
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   132
  from google.appengine.api import users
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   133
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   134
  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
   135
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   136
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   137
  site_entity = site_logic.logic.getSingleton()
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   138
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   139
  if site_entity.noreply_email:
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   140
    return site_entity.noreply_email
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   141
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   142
  # use the email address of the current logged in user
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   143
  account_entity = users.get_current_user()
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   144
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   145
  if not account_entity:
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   146
    logging.warning('Non-Authenticated user triggered getDefaultMailSender')
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   147
    return None
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   148
1548
15caebd3304d Denormalize accounts before trying to send e-mail
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1545
diff changeset
   149
  return accounts.denormalizeAccount(account_entity).email()