複雑なことは何もありません-真実です! 実際、メーラーを書くのは、梨を砲撃するのと同じくらい簡単です。 コンソールからメールを読むのと同じくらい簡単。
さらに-ライブサンプルに関する2つの小さな記事-電子メールクライアントなしでPOP3とIMAPを使用する方法。
POP3を読む
Linuxが必要になります。 まあ、またはWindowsでのOpenSSLサポート-持っている場合-おそらくあなたのためではない-あなたはすでにすべてを知っています:)
次は、復号化を使用した一連のコマンドです。
openssl s_client -crlf -ign_eof -connect pop.gmail.com:995
SSLを使用して電子メールに接続します。 -crlfパラメーターにより、改行を処理する必要がなくなり、コマンドが必要に応じて認識されるようになります。
-ign_eofパラメーターは、文字Rで始まるコマンドがs_clientによって正しく受け入れられ、SSLブレークが発生しないことを保証します。
接続が成功した場合、次のように表示されます。
接続済み(00000003)
... SSLを示す文字と数字の束 ...
+ OK Gpopは79.165.189.32 3pf3718132bwz.16からのリクエストに対応
これは、最初の段階ですべてがうまくいったことを意味し、Googleメーラーに参加しました。
次に、ログインする必要があります。
gmail .comを使用しないユーザーログイン
コマンドが正常に完了すると、次の行が表示されます。
+ OK PASSを送信
パスワードの入力を求められます。 私たちがすること:
PASS your_password
パスワードが正しい場合-内部で許可されています!
+ OKようこそ。
これが受信トレイの中です。
確認しましょう-新しいメッセージを受け取りましたか?
スタット
私は次を見ました:
+ OK 15 1408449
これは、サーバー上に合計サイズ1,408,449バイトの未読メッセージが15個あることを意味します。
興味深い-未読の各手紙の重量はどれくらいですか?
一覧
メッセージのリストは次のとおりです。
+ OK 15メッセージ(1408449バイト)
1 3423
2 42610
3 3693
4 3693
5 445122
6 1933
7 3488
8 3760
9 3155
10 439325
11 9071
12 3125
13 3575
14 3997
15,438,479
見てください-これまでのところ複雑なことはありません:)
5番目のメッセージを読みましょう-その中にはたくさんのバイトがあります-おそらく面白い手紙です!
TOPコマンドは、手紙を読むために利用できます。
トップ5 0
このコマンドでは、テキストなしで5番目の文字を要求しました-ヘッダーのみを受信します。 ヘッダーには、とりわけ、この手紙が誰から来たのか、誰から、何を持っているのかが表示されます。
...
From:root <bender@skazkin.ru>
To:master@skazkin.ru
件名:Cron <root @ skazkinserver> perl /home/common/parser.pl queue
...
サーバーから、パーサーがキューの構築を完了したというレポートを受け取りました。 さて、私にこれを読むことはあまり面白くありません-異なる公式情報があります。
削除用にマークする
DELE 5
Gmailは私たちを理解しました-
+削除のマークが付いたOK
Gmailは、ログアウト後に削除のマークが付いたメッセージを削除します。
最小の手紙を読む-
トップ6 0
件名:=?KOI8-R?B?0NLJ18XU?=
From:=?KOI8-R?B?4c7Uz84g58HCz9c =?= <Gmail .com friend>
宛先:Andrew Skazkin <me gmail .com>
コンテンツタイプ:テキスト/プレーン; 文字セット= ISO-8859-1
うわー-読めない:(
これはすでにメールクライアントによって解決されています-手紙の件名はKOI8-Rでエンコードされ、BASE64で暗号化されています。
さて、メールは読み終わったので、今から出発します。
私はそう思った-私はクロンから手紙を削除しません。
RSET
このコマンドは、削除用にマークした文字の削除フラグをクリアします。
+ OK
そのような答え-成功した場合。 これで外出できます。
やめて
私たちへの答えは
+ OKお別れ。
読み取り:errno = 0
以上です。 POP3がわかりましたよね? IMAPの時が来ました。
IMAPで遊ぶ
手順はそれほど変わりません-チームだけです。
openssl s_client -crlf -ign_eof -connect imap.gmail.com:993
繰り返しになりますが、たくさんの文字と数字、そして最後の行を与えてくれました-
+OK。79.165.189.321pf4035116fxm.33からのリクエストに対応したGpop
アカウントにログインします。
。 ログインi gmail .comパスワード
成功しました!
*機能IMAP4rev1非選択リテラル+アイドル名前空間QUOTA ID XLIST小児X-GM-EXT-1 UIDPLUS COMPRESS = DEFLATE
。 OK gmail.comで認証されました(成功)
注意してください-すべてのチームの前にはピリオドとスペースがあります!
アカウント内のフォルダーのリストを取得します。
。 リスト「」「*」
フォルダのリストは私たちに落ちます:
* LIST(\ HasNoChildren) "/" "Cron"
* LIST(\ HasNoChildren) "/" "INBOX"
* LIST(\ HasNoChildren) "/" "LJ"
* LIST(\ HasNoChildren) "/" "プロキシ"
* LIST(\ HasNoChildren) "/" "WordPress"
* LIST(\ Noselect \ HasChildren) "/" "[Gmail]"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BBIEQQRP-&BD8EPgRHBEIEMA-"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BBoEPgRABDcEOAQ9BDA-"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BB4EQgQ、BEAEMAQyBDsENQQ9BD0ESwQ1-"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BB8EPgQ8BDUERwQ1BD0EPQRLBDU-"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BCEEPwQwBDw-"
* LIST(\ HasNoChildren) "/" "[Gmail] /&BCcENQRABD0EPgQyBDgEOgQ4-"
。 成功しました
意味不明の文字-ロシア語で名前が付けられたフォルダ。
INBOXフォルダーにはいくつの文字がありますか?
。 ステータスINBOX(メッセージ)
答えは
*ステータス「受信トレイ」(メッセージ8)
。 成功しました
わあ! 新しいメールがあります! 読んでください:
。 受信トレイを選択
選択が成功しました:
*フラグ(\ Answered \ Flagged \ Draft \ Deleted \ Seen)
* OK [パーマネントフラグ(\ Answered \ Flagged \ Draft \ Deleted \ Seen \ *)]
* OK [UIDVALIDITY 2]
* 8個あります
* 0最近
* OK [UIDNEXT 68967]
。 OK [読み取り/書き込み]受信ボックスが選択されました。 (成功)
見てみましょう-8文字のうち、まだ読んでいないのはどれですか:
。 フェッチ1:*フラグ
このコマンドは、最初の文字から始まるすべての文字のフラグを選択します。
* 1 FETCH(フラグ(\ Seen))
* 2 FETCH(フラグ(\ Seen))
* 3 FETCH(フラグ(\ Seen))
* 4 FETCH(フラグ(\ Seen))
* 5 FETCH(フラグ(\ Seen))
* 6 FETCH(フラグ())
* 7 FETCH(フラグ())
* 8 FETCH(フラグ())
。 成功しました
私たちは7番目の手紙を読みます-そのヘッダー
。 フル7を取得
* 7 FETCH(ENVELOPE( "Fri、20 Nov 2009 09:58:35 +0000" "=?KOI8-R?B?79TXxdTJ1NggzsEg08 / Pwt3FzsnFICfSwcLP1MXOy8EgzsEgMSDCwcvTJw ==?="((5 =? S1c0gzyDQz8nTy8 / X2cgg08nT1MXNwcg =?= "NIL" root "" searchengines.ru "))((" =?KOI8-R?B?5s / S1c0gzyDQz8nTy8 / X2cgg08nT1MXNwcg =?)= ")=")= ")=" = ( "=?KOI8-R?B?5s / S1c0gzyDQz8nTy8 / X2cgg08nT1MXNwcg =?=" NIL "root" "searchengines.ru"))((NIL NIL "master" "skazkin.ru")))NIL NIL NIL "<200911200935 .b8f41f512510 @ forum.searchengines.ru> ")FLAGS()INTERNALDATE" 20-Nov-2009 09:58:38 +0000 "RFC822.SIZE 4045)
。 成功しました
一般に、もちろん理解できる-しかし、私は理解したい
。 fetch 7(body [header.fields(from to subject date)])
興味深いヘッダーのみを選択します。
* 7 FETCH(BODY [HEADER.FIELDS(from from subject date)] {334}
日付:2009年11月20日金曜日09:58:35 +0000
To:master@skazkin.ru
From:=?Windows-1251?Q?= D4 = EE = F0 = F3 = EC_ = EE_ = EF = EE = E8 = F1 = EA = EE = E2 = FB = F5_ = F1 = E8 = F1 = F2 = E5 = EC = E0 = F5?=
<root@searchengines.ru>
件名:=?Windows-1251?Q?= CE = F2 = E2 = E5 = F2 = E8 = F2 = FC_ = ED = E0_ = F1 = EE = EE = E1 = F9 = E5 = ED = E8 = E5_ = 27 = F0 = E0 = E1 = EE = F2 = E5 = ED = EA = E0_ = ED = E0_1_ = E1 = E0 = EA = F1 = 27?=
手紙の本文を読む:
。 フェッチ7 rfc822.text
ここにあります:
* 7 FETCH(RFC822.TEXT {1299}
...メッセージエンコードされたwindows-1251
。 成功しました
一般に、ご覧のとおり、POP3およびIMAPのコンソール出力で管理するのは難しいことではありません。
唯一の違いは、IMAPがより洗練されており、POP3の機能が大幅に削減されていることです。これにより、INBOXフォルダー内のメールのみを読み取ることができます。
サポート情報:
良いIMAPマニュアル
IMAP RFC