GAEでメールを送信してみました

*Google App Engine でメール送信

GAEではメール送信APIを使うことができるので試してみました。現時点では Python と Java で利用できますが、今回はPythonを使っています。
また、mail.send_mail()を使う方法とEmailMessageクラスを使う方法がありますが、参考になるドキュメントが多かったのでmail.send_mail()を使う方法で実装しています。


*参考



*実装方法

使い方はとても簡単で、Mail API をimport して、送信元/送信先/件名/メール本文/添付ファイル の情報をsend_mail()の引数に渡すだけです。
TO に複数のメールアドレスを指定すると送信先全員にメールアドレスが表示されてしまうので、表示させたくない場合は BCC として指定します。
宛先はリストにすれば複数を指定することができます。

添付ファイルは Cloud Storage から取得したものをattachmentssend_mail()に渡しています。gcs_fileにはgs://を除いたURLを指定します。

import logging
import cloudstorage
from google.appengine.api import mail


def send_mail():
    sender_address = 'aaaaaaa@hogehoge.com'
    mail_to = 'bbbbbb@hugahuga.co.jp'
    mail_bcc = ['cccccc@hugahuga.co.jp', 'dddddd@hugahuga.co.jp']
    mail_subject = 'this is test.'
    mail_body = """
    Thank you! 
    """
    filename = 'sample.txt'

    gcs_file = '{YOUR-BUCKET-NAME}'
    f = cloudstorage.open(filename=gcs_file)

    mail.send_mail(
      sender=sender_address,
      to=mail_to,
      bcc=mail_bcc,
      subject=mail_subject,
      body=mail_body,
      attachments=[filename, f.read()])

    logging.info('Send report completed.')


*補足

簡単にメールを送信することができるのですが、send_mail()を使う方法も EmailMessage クラスを使う方法も、レスポンスが返却されないようで送信結果の確認ができませんでした。
なので、正常に送信されたかの確認がしたい場合は、SendGridを使ったメール送信APIを使ったほうが良いです。(SendGridではメールが開封されたかなど細かい追跡も可能です)

Previous
Next Post »

人気の投稿