2

IMAP アカウントの受信トレイをチェックし、それらの電子メールを読み取り、特定の電子メールに返信する Python スクリプトを作成しています。ただし、セキュリティ上の理由から、電子メールの元の送信者が特定のドメインからのものであることを確認する必要があります。

emailライブラリとそのmessage_from_string関数を使用して、Python で電子メールを読んでいます。

msg = email.message_from_string(data[0][1])

これにより、 経由で送信者に簡単にアクセスできますmsg['from']。いくつかのテストの後、これは一般的に形式であることがわかりましたが、形式John Doe <JohnDoe@example.com>でもある可能性があると思いますJohnDoe@example.com

先ほど言ったように、送信者の電子メールのドメインがfoobar.net. それを確認する最良の方法は何でしょうか?形式に関係なく電子メールを取り出すことができるように、正規表現を使用する必要msg['from']がありますか? または、文字列を分割して@から、次の 10 文字を確認する必要がありfoobar.netますか? まったく別の何か?

4

5 に答える 5

0

正規表現を使用することをお勧めします。ただし、電子メールの「送信元」フィールドは電子メール クライアントによって設定され、簡単に偽装できることにも注意してください。そのため、送信メールサーバーもチェックすることがオプションである可能性があるかどうかを考える必要があります.

乾杯ヘンドリック

于 2013-12-04T07:54:27.267 に答える
0

電子メール ライブラリには、送信者とそのドメインを抽出する機能はありませんか?

しかし、そうでない場合や、確認したい既知のドメインが 1 つだけの場合は、msg['from']含まれているかどうかを確認して、それで@foobar.net完了します。

于 2013-12-04T08:21:35.593 に答える
0

単純なドメインに対して次のパターンを試すことができます。

パターン

(?<=@)\w+(\.\w+?)+?(?=>)

このパターンは基本的に後@と前のすべてをチェックします>

入力

1. John Doe <JohnDoe@example.com.no>
2. John Doe <JohnDoe@foobar.net>

出力

1. example.com.no
2. foobar.net

コメントで述べたように、何らかのcontains方法を使用できます。次に、少しグーグルで検索しました。ドメインがわかっている場合は、次のようなものを使用できます。

パイソンコード

if "@foobar.net" in msg['from']: continue

このコードは以下に基づいています。

stackoverflow.com

于 2013-12-04T07:53:03.560 に答える