特定の件名の特定のアドレスからメールを受信すると、特定のアクションをトリガーすることに興味があります。そのためには、メールボックスの監視を実装し、すべての受信メールをチェックする必要があります(特に、Gmailを使用しています)。それを行う最も簡単な方法は何ですか?
GmailにはPOP経由で接続する機能があり、Gmail設定パネルで有効にできます。 Pythonは、POPを介した接続を非常に簡単に行うことができます。
import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('username')
pop_conn.pass_('password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print message['subject']
pop_conn.quit()
このスクリプトをcronジョブとして実行するだけです。どのプラットフォームを使用しているのかわかりません。
Gmailは、新しいメールメッセージに対してatom feed を提供します。pycURL(または他のネットライブラリ)で認証し、フィードをプルダウンすることでこれを監視できるはずです。 。新しいメッセージごとにGETリクエストを行うと、開封済みとしてマークされるので、どのメールを読んだかを追跡する必要はありません。
Python固有ではありませんが、私はいつも procmail どこにインストールしても好きでした...!
| pathtoyourscript
(これらの場合に実行するスクリプトが続く垂直バーAKAパイプ)の選択条件のアクションラインの一部として使用すると、メールは、選択した条件の下で、好きなスクリプトを実行します。「特定の条件を満たすメールを受信したときに、選択したアクションをトリガーするより一般的なアプローチを考えるのは難しいです。もちろん、条件の数に制限はありません」 1つの条件でトリガーできるアクション行数(必要なすべてのアクション行を{ }
中括弧で囲むだけ)などを確認できます。
人々はラムソンについて興奮しているようです:
https://github.com/zedshaw/lamson
それはすべてPythonで書かれたSMTPサーバーです。それを活用して、必要なことをすべて実行できると確信しています。GmailメッセージをそのSMTPサーバーに転送してから、必要なことを実行するだけです。
ただし、上記のATOMフィードの推奨事項を実行するのがおそらく最も簡単だと思います。
編集:ラムソンは放棄されました
これと同じことをしたいときに pretty good snippet を見つけました(そしてこの例ではgmailを使用しています)。これについても google検索結果 もご覧ください。
私は最近、procmailとpythonを使用してこの問題を解決しました
Procmailのドキュメントを読んでください。すべての受信メールをpythonのような特別なprocmail構成ファイルのスクリプトに送信するように指示できます。
:0:
| ./scripts/ppm_processor.py
Pythonには、電子メールでやりたいことを何でもできる「電子メール」パッケージがあります。次のものを読んでください。
from email.generator import Generator
from email import Message
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.mime.multipart import MIMEMultipart