さまざまなケースで、Pythonアプリケーション内から電子メールサーバーにアクセスして、電子メールを読んだり、電子メールクライアントを実装したりします。電子メールサーバーから電子メールを取得するには、インターネットメッセージアクセスプロトコル(IMAP)プロトコルが一般的に使用されます。この記事では、PythonでIMAPを使用してサーバーからメールを読み取る方法を紹介します。この記事では、電子メールサーバーへの接続方法、目的のフォルダーへのアクセス方法、および電子メールの読み取り方法について明示的に説明します。
IMAPを使用してメールを読み取るPythonライブラリ
IMAP経由でメールサーバーからメールを読むには、Aspose.Email for Python via .NETを使用します。これは、電子メールを送信したり、電子メールサーバーからメールボックスにアクセスしたりできる強力な電子メールライブラリです。次のコマンドを使用して、PyPIからライブラリをインストールできます。
pip install Aspose.Email-for-Python-via-NET
.whlファイルを使用して手動でインストールする場合は、以下の手順に従ってください。
- ダウンロードセクションからインストール可能な.whlファイルをダウンロードします。
- コマンドラインから、次のコマンドを使用します。pip install «FileName».whlでライブラリをインストールします。
PythonのIMAP経由でEメールサーバーに接続する
IMAPを使用して電子メールサーバーに接続する手順は次のとおりです。
- ImapClientクラスのインスタンスを作成し、ホスト名、ポート、ユーザー名、およびパスワードで初期化します。
- ImapClientオブジェクトを使用してメールボックスにアクセスします。
次のコードサンプルは、PythonでIMAPを使用してメールサーバーに接続する方法を示しています。
from aspose.email import SecurityOptions, ImapClient
# create an instance of ImapClient and provide host, port, username and password
client = ImapClient("imap.domain.com", 993, "user@domain.com", "password")
# set security options
client.security_options = SecurityOptions.SSLIMPLICIT
# use ImapClient object to access mailbox
Pythonのメールボックスからメールフォルダにアクセスする
電子メールサーバーへの接続を確立したら、電子メールメッセージを読み取るフォルダーを選択できます。まず、メールボックス内のすべてのフォルダのリストを取得する方法を確認しましょう。各フォルダに関する情報を取得する手順は次のとおりです。
- ImapClientクラスのインスタンスを作成し、ホスト名、ポート、ユーザー名、およびパスワードで初期化します。
- ImapClient.listfolders()メソッドを使用して、オブジェクト内のフォルダーコレクションを取得します。
- コレクションをループして、フォルダーの詳細を取得します。
次のコードサンプルは、メールボックス内のフォルダーの詳細を印刷する方法を示しています。
from aspose.email import ImapClient
# create an instance of ImapClient and provide host, port, username and password
with ImapClient("imap.gmail.com", 993, "username", "password") as client:
# get list of folders
folderInfoColl = client.list_folders()
# iterate through the collection to get folders' info one by one
for folderInfo in folderInfoColl:
print("Folder name is " + folderInfo.name)
folderExtInfo = client.get_folder_info(folderInfo.name)
print("New message count: " + str(folderExtInfo.new_message_count))
print("Is it readonly? " + str(folderExtInfo.read_only))
print("Total number of messages " + str(folderExtInfo.total_message_count))
次に、IMAPを使用してメールボックス内の特定のフォルダにアクセスします。
- ImapClientクラスのインスタンスを作成し、ホスト名、ポート、ユーザー名、およびパスワードで初期化します。
- ImapClient.selectfolder(string)メソッドを使用して、フォルダーを選択します。
次のコードサンプルは、メールボックスから電子メールフォルダを選択する方法を示しています。
from aspose.email import ImapClient
# create an instance of ImapClient and provide host, port, username and password
with ImapClient("imap.gmail.com", 993, "username", "password") as client:
# select the folder from mailbox
client.select_folder("Inbox")
Pythonのフォルダからメールを読む
以下は、Pythonを使用してメールボックス内の特定のフォルダーから電子メールメッセージを読み取る手順です。
- ImapClientクラスのインスタンスを作成し、ホスト名、ポート、ユーザー名、およびパスワードで初期化します。
- ImapClient.selectfolder(string)メソッドを使用して、フォルダーを選択します。
- client.listmessages()メソッドを使用して、フォルダー内のメッセージのリストを取得します。
- メッセージのコレクションをループします。
- 各電子メールメッセージの詳細を取得し、必要に応じてディスクに保存します。
次のコードサンプルは、Pythonでメールサーバーからメールを読み取る方法を示しています。
from aspose.email import ImapClient
# create an instance of ImapClient and provide host, port, username and password
with ImapClient("imap.gmail.com", 993, "username", "password") as client:
# select folder
client.select_folder("Inbox")
# read each message in collection
for msg in client.list_messages():
print( "From: '{}', MIME Id: {}".format(msg.from_address, msg.message_id) )
# save message on disk
client.save_message(msg.unique_id, msg.unique_id + "_out.eml")
無料のAPIライセンスを取得する
一時ライセンスの取得により、.NET経由でAspose.EmailforPythonを無料で使用できます。
結論
この記事では、PythonでIMAPを使用してメールサーバーからメールを読み取る方法を学習しました。コードサンプルは、電子メールサーバーに接続し、メールボックス内のフォルダーのリストを取得し、フォルダーを選択して電子メールを読み取る方法を示しています。さらに、ドキュメントにアクセスして、.NET経由のAspose.EmailforPythonの詳細を確認できます。また、GitHubからソースコードサンプルの完全なパッケージをダウンロードできます。ご不明な点やご質問がございましたら、フォーラムからお気軽にお問い合わせください。