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 件のコメント:
コメントを投稿