10

libcurlがIMAPをサポートしていることに気づきましたが、ドキュメントには何も見つかりませんでした。例http://curl.haxx.se/libcurl/c/imap.htmlは非常に貧弱です。このライブラリでこのプロトコルを使用する方法、メールをダウンロードする方法を知っている人はいますか?よろしく

4

2 に答える 2

13

メーリング リストには、IMAP 構文を説明する適切な電子メールがあります: http://curl.haxx.se/mail/lib-2013-03/0104.html

これは関連する部分です:

--url imap://mail.example.com/INBOX/;UID=1 - ユーザーの受信トレイを選択し、メッセージ 1 を取得します

--url imap://mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - ユーザーの受信ボックスを選択し、メールボックスの UIDVALIDITY が 50 であることを確認し、そうであればメッセージ 2 を取得します

--url imap://mail.example.com/INBOX/;UID=3/;SECTION=TEXT - ユーザーの受信トレイを選択し、メッセージ 3 をメッセージのテキスト部分のみで取得します

メールを取得するだけでなく、メールをサーバーに転送することもできます。これは、IMAPs APPEND コマンドを介して実現され、サーバーにデータをアップロードするための curl の既存のメカニズムを利用するだけです。

--url imap://mail.example.com/OUTBOX -T email.txt

  • 次のような他のコマンドを発行できます。メールボックスのサブフォルダを一覧表示する LIST。メールボックスに存在する電子メールを確認します。サブフォルダーを操作する CREATE、RENAME、DELETE、電子メールのプロパティを変更する STORE などがあります。以下にいくつかの例を示します。

--url imap://mail.example.com - 最上位のフォルダー リストを実行します。

--url imap://mail.example.com/INBOX - ユーザーの受信トレイでフォルダ リストを実行します。

--url imap://mail.example.com -X "EXAMINE INBOX" - ユーザーの受信ボックスでメッセージ リストを実行します。

--url imap:// mail.example.com/INBOX -X "CREATE Sub-folder" - ユーザーの受信ボックス内にサブフォルダーを作成します

--url imap:// mail.example.com/INBOX -X "RENAME Sub-folder My-folder" - ユーザーの受信トレイ内のサブフォルダーの名前を my-folder に変更します

--url imap:// mail.example.com/INBOX -X "DELETE Sub-folder" - ユーザーの受信トレイ内のサブフォルダーを削除します

--url imap:// mail.example.com/INBOX -X "STORE 1 +Flags \Deleted" - ユーザーの受信ボックスからメッセージ 1 を削除します

--url imap:// mail.example.com/INBOX -X "STORE 1 +Flags \Seen" - ユーザーの受信トレイのメッセージ 1 を既読としてマークします

URL 構文を使用してメッセージをフェッチするだけでなく、カスタム リクエスト メカニズムを使用してカスタム FETCH 操作を実行することもできます。例えば

--url imap:// mail.example.com/INBOX -X "'FETCH 1 BODY[TEXT]" は、

--url imap:// mail.example.com/INBOX/;UID=1/;SECTION=TEXT

于 2013-06-04T16:10:47.367 に答える
4

次のコマンドは、Gmail の受信トレイと問題FETCH 1 BODY[TEXT]を選択して、最初の (最も古い) メッセージを取得します。

curl -v 'imaps://creaktive+gmail.com:dxdnbndeokykvkkd@imap.gmail.com:993/Inbox'

メールボックスの一覧表示や最新のメッセージの選択など、他のタスクを実行する簡単な方法があるかどうかはよくわかりません。

于 2012-11-13T02:21:28.783 に答える