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