• Официальный сайт SDK
  • Сайт с примерами кода

Отправка почты

Интерфейс Mail API предоставляет два способа отправки сообщений: через использование функции mail.send_mail() и класс EmailMessage.

Функция mail.send_mail() принимает в качестве своих параметров поля формируемого сообщения, такие как адреса отправителя, получателей, тему и тело сообщения.

from google.appengine.api import mailmail.send_mail(sender="[email protected]",to="Albert Johnson <[email protected]>",subject="Ваш аккаунт был подтвержден",body="""Уважаемый Альберт:Ваш аккаунт на сайте example.com был подтвержден. Теперь вы сможете при посещении сайта по адресуhttp://www.example.com/ авторизоваться с использованием своего аккаунта Google и получить доступ к дополнительным разделам сайта.Пожалуйста, напишите нам, если возникнут какие-нибудь вопросы.Команда сайта example.com"""

Класс EmailMessage предоставляет ту же самую функциональность через использование объектов. Поля формируемого сообщения могут быть переданы в конструкторе класса EmailMessage и затем обновлены через атрибуты экземпляра класса. Метод send() отправляет подготовленное сообщение. Приложение может повторно использовать один и тот же экземпляр класса EmailMessage, изменив его атрибуты и повторно вызвав метод send().

from google.appengine.api import mailmessage = mail.EmailMessage(sender="[email protected]",subject="Ваш аккаунт был подтвержден")message.to = "Albert Johnson <[email protected]>"message.body = """Dear Albert:Your example.com account has been approved. Теперь вы сможете при посещении сайта по адресуhttp://www.example.com/ авторизоваться с использованием своего аккаунта Google и получить доступ к дополнительным разделам сайта.Пожалуйста, напишите нам, если возникнут какие-нибудь вопросы.Команда сайта example.com"""message.send()

Для дополнительной информации о всех доступных полях сообщений, смотрите раздел Поля сообщения.

Отправка происходит асинхронно: функция mail.send_mail() и метод send() класса EmailMessage передают сервису содержимое сообщения и возвращают управление программе. Сервис производит постановку нового сообщения в очередь на отправку, и выполняет ее, в том числе и позднее, если почтовый сервер получателя временно был недоступен. Ошибки и уведомления будут отправляться на адрес отправителя сообщения.

Адрес отправителя сообщений должен быть электронной почтой зарегистрированного администратора или адресом текущего авторизованного пользователя (того, кто выполнил запрос к приложению). Ниже приведен пример того, как можно отправить сообщение от имени текущего авторизованного пользователя, используя конструкцию login_required, при необходимости перенаправив пользователя на страницу входа:

from google.appengine.api import mailfrom google.appengine.api import usersfrom google.appengine.ext import webappfrom google.appengine.ext.webapp.util import login_requiredclass InviteFriendHandler(webapp.RequestHandler):@login_requireddef post(self):to_addr = self.request.get("friend_email")if not mail.is_email_valid(to_addr):# Возвращает сообщение об ошибке...passmessage = mail.EmailMessage()message.sender = users.get_current_user().email()message.to = to_addrmessage.body = """Я приглашаю Вас посетить сайт Example.com!Для принятия приглашения, нажмите следующую ссылку илископируйте ее и вставьте в адресную строку Вашегобраузера:%s""" % generate_invite_link(to_addr)message.send()

Для отправки электронной почты из среды разработки необходимо задать дополнительные параметры сервера в командной строке. Можно указать осуществление отправки через SMTP сервер, либо через программу Sendmail. При выполнении приложения на платформе App Engine, оно сразу использует системный сервис электронной почты. Для дополнительной информации смотрите раздел Сервер разработки.