0

電子メールのコピーを保存し、python スクリプトを呼び出す .forward ファイルを使用して、電子メール サーバーに postfix を構成しました。これらのメールは Maildir 形式で保存されます。

この python スクリプトを使用して、メールが受信されたことを確認する返信を送信者に送信したいと考えています。その電子メールを開いてアクセスし、ヘッダー情報と送信者アドレスを取得して、電子メールを送り返す方法があるかどうか疑問に思っていました。

pythonのMaildir関数の例をいくつか見ましたが、メールの追加・削除がほとんどです。Maildir/new で受信した最新の電子メールを開き、必要な情報を取得するにはどうすればよいですか?

前もって感謝します。ばかげた質問で申し訳ありませんが、私はPythonが初めてです。

編集:

md =  mailbox.Maildir('/home/abcd/Maildir')
message = md.iterkeys().next()
#print message
#for msg in md:
#    subject = msg.get('Subject',"")
#    print subject
print message
sender = message.get('From',"")
print sender

これを実行すると、送信者名を取得します..しかし、最新のメールではなく、Maildir / newフォルダーに到着した最も古いメールです。

また、get_date 関数を使用した場合、同じ日に 2 つ (またはそれ以上) メールが届いた場合はどうなりますか?

4

1 に答える 1

0

これに関するいくつかのヒント:

  • mailbox.Maildir クラスで Maildir を開くことができます (メールボックスのドキュメントを参照してください)。
  • メソッド itervalues を介して、Maildir 内のすべてのメールを反復処理できます。
  • これで、Maildir 内のすべてのメールを取得できます。そのうちの 1 つは最新のものです。
  • メールは、Message のサブクラスである MaildirMessage クラスのオブジェクトです。これらのクラスについては、ドキュメントも存在します (現在、メールボックスと同じページにあります)。
  • これらのオブジェクトに対して「get_date」メソッドを使用すると、どれが最新のものかを確認できます。まだ自分で選択する必要があります。

初心者が助けるのと同じくらい:あなたも自分でやるべきです。

Python のドキュメントに慣れておく必要があります。適切なパッケージとその使用方法を見つけるのは簡単ではないことに同意しますが、Python シェルで直接試すことができます。

わかりました、ここに別のコードスニペットがあります:

newest = None
for message in md.itervalues():
   if newest == None or message.get_date() > newest.get_date():
      newest = message
# now newest should contain the newest message

最後の質問を見ていませんでした: get_date には日付だけでなく、時刻も含まれています。これは、(通常) 1970 年からの秒数を示すためです。

于 2015-02-19T05:00:01.687 に答える