Google App Engineでメールを送信するスクリプトがありました。どこで教えていただいたものか忘れてしまいました。
# encoding: utf-8
import os
import logging
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.api import mail, users
class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
if not user:
self.redirect(users.create_login_url("/"))
else:
# メール送信の設定
nickname = user.nickname()
mailAddr = user.email()
# ログの記録
logging.debug("%s<%s>にメールします", nickname, mailAddr)
# メール送信
mail.send_mail(sender="<メールアドレス>",
to="%s<%s>" % (nickname, mailAddr),
subject="こんにちは!%sさん" % nickname,
body="""
拝啓、%sさん
お世話になっております。
そしてさようなら。
""" % nickname)
# 画面表示
path = os.path.join(os.path.dirname(__file__), 'response.html')
self.response.out.write(
template.render(path, {'username':user.nickname()}))
def main():
application = webapp.WSGIApplication([('/', MainPage)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == "__main__":
main()このアプリのサイトにアクセスをすると、ログインしているGoogleのアカウント宛にメールを送信します。このプログラムを定期的に動作させるために、cronを使って設定します。下記がcron.yamlの設定。
cron: - description: mail cron test url: / schedule: every 2 hours timezone: Asia/Tokyoこのプログラムを2時間ごとに起動します。しかし、このままでは、正常には動作しません。スクリプトがログインユーザーがいることを前提に作成されているので、ログインしていない場合は、ログイン画面にリダイレクトされて、実際のメール送信はされません。
そこで、ログインユーザーを想定せずに、固定の送信先へメールを送信するように変更してみます。下記の<メールアドレス名>に固定のメールアドレス表示名、<メールアドレス>の部分にメールアドレスを設定します。
# encoding: utf-8
import os
import logging
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.api import mail
class MainPage(webapp.RequestHandler):
def get(self):
# メール送信の設定
nickname = "<メールアドレス名>"
mailAddr = "<メールアドレス>"
# ログの記録
logging.debug("%s<%s>にメールします", nickname, mailAddr)
# メール送信
mail.send_mail(sender="<メールアドレス>",
to="%s<%s>" % (nickname, mailAddr),
subject="こんにちは!%sさん" % nickname,
body="""
拝啓、%sさん
お世話になっております。
そしてさようなら。
""" % nickname)
def main():
application = webapp.WSGIApplication([('/', MainPage)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == "__main__":
main()これで、定期的にメールを送信することが出来るようになりました。Google App Engine Launcherを使ってのアップ方法を記録しておきます。
アプリを選んで、「Deploy」ボタンをクリックします。
Deploy Application to Googleの認証画面で、Emailとパスワードを入れて、「OK」ボタンを押します。
その後は自動でアップロードが始まり、動作状況がモニタされます。



0 件のコメント:
コメントを投稿