2

私はプログラミングがまったく初めてで、特定の電子メールアドレスにメッセージを送信する自動応答機能を構築しようとしています。

if文を使えば受信トレイに特定のアドレスからのメールがあるかどうかを確認してメールを送信できるのですが、そのアドレスからのメールが複数ある場合、forループを作ってすべてのメールを送信するにはどうすればよいですか?その特定のアドレスからの電子メール。

これをループとして使用しようとしました:

for M.search(None, 'From', address) in M.select(): 

しかし、その行に「関数呼び出しに割り当てることができません」というエラーが表示されます

4

1 に答える 1

6

あなたがプログラミングの初心者だと主張しているように、私の最善のアドバイスは次のとおりです。常にドキュメントを読んでください。

そして、最初にチュートリアルを読む必要があるかもしれません。


ドキュメントには例が示されています。

import getpass, imaplib

M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    print 'Message %s\n%s\n' % (num, data[0][3])
M.close()
M.logout()

やってみました?


あなたのコードについて:

forloopを定義すると、次のようになります。

for x in some_data_set:

x一度に 1 つの項目の値を保持する変数です (また、for ループ本体でのみアクセスできます (1 つの例外がありますが、ここでは重要ではありません))。

あなたがしていることは imaplib モジュールとは関係ありませんが、間違った構文です。

ところで。メールボックスを選択し、メールボックス内のメッセージ数.select()のみを返します。つまり、単なるスカラー値であり、反復できるシーケンスはありません:

IMAP4.select([mailbox[, readonly]])
メールボックスを選択します。返されるデータは、メールボックス内のメッセージの数です (EXISTS 応答)。デフォルトのメールボックスは「INBOX」です。readonly フラグが設定されている場合、メールボックスへの変更は許可されません。

(これは確かに imaplib モジュールに関連しています;))

于 2010-06-06T09:10:30.650 に答える