app/soc/logic/mail_dispatcher.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 28 Feb 2009 14:28:28 +0000
changeset 1560 656aace0b15f
parent 1551 78c6c14c6b63
child 1600 0aa3de1b2acc
permissions -rw-r--r--
Catch mail exceptions and use get_current_user 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
1560
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
    70
from google.appengine.api import users
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
    71
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
1560
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   118
  try:
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   119
    # send the message
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   120
    message.send()
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   121
  except Exception, e:
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   122
    import logging
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   123
    logging.info(context)
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   124
    logging.exception(e)
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   125
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   126
def getDefaultMailSender():
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   127
  """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
   128
  
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   129
  Returns:
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   130
    - 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
   131
    Consisting of:
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   132
    - 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
   133
    - 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
   134
    - 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
   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
  import logging
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   138
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   139
  from soc.logic import accounts
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   140
  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
   141
  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
   142
1550
a872030dc3ca getDefaultMailSender now returns a tuple (name, email adress).
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1548
diff changeset
   143
  # 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
   144
  site_entity = site_logic.logic.getSingleton()
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   145
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   146
  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
   147
    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
   148
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   149
  # use the email address of the current logged in user
1560
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   150
  account = users.get_current_user()
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   151
1560
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   152
  # we need to retrieve account seperately, as user_logic normalizes it
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   153
  # and the GAE admin API is case sensitive
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   154
  user_entity = user_logic.logic.getForAccount(account)
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   155
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   156
  if not account:
1545
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   157
    logging.warning('Non-Authenticated user triggered getDefaultMailSender')
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   158
    return None
ce5d37a38091 Added getDefaultMailSender method to mail_dispatcher.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1449
diff changeset
   159
1560
656aace0b15f Catch mail exceptions and use get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1551
diff changeset
   160
  return (user_entity.name, account.email())