メールの送信

mail API では、mail.send_mail() 関数と EmailMessage クラスの 2 つの方法でメール メッセージを送信できます。

送信は非同期です。mail.send_mail() 関数と EmailMessage.send() メソッドは、メッセージ データをメールサービスに送信して戻ります。メールサービスは、メッセージをキューに登録して送信を試み、宛先のメールサーバーが使用できない場合には再試行します。エラーやバウンスメールは、メール メッセージの送信者アドレスに送られます。

はじめに

送信者のメールアドレスを承認済み送信者として登録する必要があります。詳細については、メールを送信できるユーザーをご覧ください。

mail.send_mail() でのメールの送信

mail.send_mail() 関数を使ってメールを送信するには、送信者、受信者、件名、メッセージ本文など、メール メッセージのフィールドをパラメータとして使用します。次に例を示します。

    mail.send_mail(sender=sender_address,
                   to="Albert Johnson <Albert.Johnson@example.com>",
                   subject="Your account has been approved",
                   body="""Dear Albert:

Your example.com account has been approved.  You can now visit
http://www.example.com/ and sign in using your Google Account to
access new features.

Please let us know if you have any questions.

The example.com Team
""")

EmailMessage でのメールの送信

EmailMessage クラスでオブジェクトを使ってメールを送信するには、メール メッセージのフィールドを EmailMessage コンストラクタに渡し、インスタンスの属性を使ってメッセージを更新します。

EmailMessage.send() メソッドは、インスタンスの属性で表されるメール メッセージを送信します。アプリケーションは、属性を変更して send() メソッドを再度呼び出すことで、EmailMessage インスタンスを再利用できます。

    message = mail.EmailMessage(
        sender=sender_address,
        subject="Your account has been approved")

    message.to = "Albert Johnson <Albert.Johnson@example.com>"
    message.body = """Dear Albert:

Your example.com account has been approved.  You can now visit
http://www.example.com/ and sign in using your Google Account to
access new features.

Please let us know if you have any questions.

The example.com Team
"""
    message.send()

次の例は、メールアドレスを確認するメッセージの送信を示しています。

class UserSignupHandler(webapp2.RequestHandler):
    """Serves the email address sign up form."""

    def post(self):
        user_address = self.request.get('email_address')

        if not mail.is_email_valid(user_address):
            self.get()  # Show the form again.
        else:
            confirmation_url = create_new_user_confirmation(user_address)
            sender_address = (
                'Example.com Support <{}@appspot.gserviceaccount.com>'.format(
                    app_identity.get_application_id()))
            subject = 'Confirm your registration'
            body = """Thank you for creating an account!
Please confirm your email address by clicking on the link below:

{}
""".format(confirmation_url)
            mail.send_mail(sender_address, user_address, subject, body)

一括メールの送信

一括(バルク)メールを送信する場合の考慮事項については、一括メールのガイドラインをご覧ください。