2017-05-01

GAE mail send error, use SendGrid

2017-0327 GAE mail send error, use SendGrid

ログにこのエラーが出た

OverQuotaError: The API call mail.Send() required more quota than is available.

コンソールで見ると、1日に、100通メール以上送信すると、これ以上送信できなくなるようだ



SendGridを使うといいらしい





解説がここに書いてある、英語

コンソールのCloud Launcherから



SendGridを検索


これをセットすれば、無料で月12000件可能、1日だと400件

開始してみる












ここのサイトに登録されたようだ

あとは、サンプルをコピペして使用してみるが、API Keyは取得が必要








このKeyを、GAE Pythonのソースに使う

参考サイト


そして、ここから、sendgridのフォルダをダウンロードして、
app.yamlと同じ階層、すなわちGAEの一番上の階層に置く


または、pip install (最初にlibフォルダをダミーで作成しておく)

pip install -t lib/ sendgrid

その中のファイルを、自分のGAEのlibフォルダの中に入れる

Sampleがここ、しかし、これは古いかもしれない、動かなった

sendgridのサイトにあるサンプルは、、動かなった

Googleのページにあるサンプルで動いた

ーーーーーーーーーーーーーー

import sendgrid
from sendgrid.helpers import mail


sg = sendgrid.SendGridAPIClient(apikey='sendgridで作成したAPI KEY')
to_email = mail.Email(宛先のメール)
from_email = mail.Email(送信者のメール)
subject = 'sendgrid test'
content = mail.Content('text/plain', 'sample content’)
message = mail.Mail(from_email, subject, to_email, content)
sg.client.mail.send.post(request_body=message.get())

これで動いた!

その後の感想

無料枠の場合、確信はないが、固定IPからのアクセスで、2つのプロジェクトで
2つのアカウントをSendGridで取得すると、両方共にhttpエラーとなるかもしれない。

これは、当然で、いくともプロジェクトと作成できるから、それらで無料アカウントを多数作成したら
毎月、1アカウントにつき12000件もメール送信できたら、その何十倍も無料で送信できてしまう。

なのでIPとか何らかの制御は必要でしょう。

有料を選ぶか、プロジェクトをひとつにするとかして、まじめに試した方が良い。
このサービスがGOODと思えたら、有料を使うべき、するべきと思う。


以上