メールをチェックして読むための "メールクライアント"プログラムを作成します。 多くの著者のソースコードをcodeprojectでダウンロードしましたが、プログラムは非常に長く読み込まれていました。プログラムを再起動すると、プログラムを再ダウンロードする必要があります。 ダウンロードしたメールを保存し、新しいメールのみをダウンロードするという考えがあります。 メールを保存するにはどうすればよいですか?私はXMLまたはSQLを使用できますか? 私はPOP3とIMAPを使用しています。私が読んでいたメールを保存し、C#で新しいメールのみを読み込みます。
2
A
答えて
0
サーバ上のメッセージにはUID(少なくともIMAPの場合)があります。By definition UIDは増加するだけです。意味は、UIDが321の場合、次のUIDは322以上でなければなりません。だからあなたはあなたのDBに "最後のUID"を格納し、次にサーバーから最高のUIDを取得することができます。あなたの最後のものよりも高い場合は、新しいものをロードしてください。
2
Limisoftライブラリをご覧ください。ここで
はコードのサンプルです:
using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;
using LumiSoft.Net;
...
using (IMAP_Client client = new IMAP_Client())
{
client.Connect("imap.gmail.com", 993, true);
client.Login("[email protected]", "your_cool_password");
client.SelectFolder("INBOX");
IMAP_SequenceSet sequence = new IMAP_SequenceSet();
//sequence.Parse("*:1"); // from first to last
IMAP_Client_FetchHandler fetchHandler = new IMAP_Client_FetchHandler();
fetchHandler.NextMessage += new EventHandler(delegate(object s, EventArgs e)
{
Console.WriteLine("next message");
});
fetchHandler.Envelope += new EventHandler<EventArgs<IMAP_Envelope>>(delegate(object s, EventArgs<IMAP_Envelope> e){
IMAP_Envelope envelope = e.Value;
if (envelope.From != null && !String.IsNullOrWhiteSpace(envelope.Subject))
{
Console.WriteLine(envelope.Subject);
}
});
// the best way to find unread emails is to perform server search
int[] unseen_ids = client.Search(false, "UTF-8", "unseen");
Console.WriteLine("unseen count: " + unseen_ids.Count().ToString());
// now we need to initiate our sequence of messages to be fetched
sequence.Parse(string.Join(",", unseen_ids));
// fetch messages now
client.Fetch(false, sequence, new IMAP_Fetch_DataItem[] { new IMAP_Fetch_DataItem_Envelope() }, fetchHandler);
// uncomment this line to mark messages as read
// client.StoreMessageFlags(false, sequence, IMAP_Flags_SetType.Add, IMAP_MessageFlags.Seen);
}
少し複雑ますが、正常に動作します。 Limisoftライブラリは完全ではありませんので、十分にテストしてください。
+0
私はこのコードを試しましたが、それはそのままで動作しましたが、私はボディを受け取ることができません。新しいIMAP_Fetch_DateItem_Body()を追加し、fetchHandler.Bodyにイベントハンドラを追加しましたが、この関数ではnullへのストリームとBodySectionの空の文字列のみが表示されます。アドバイスや提案はありますか? –
関連する問題
- 1. 電子メールの読み込み/未読メール
- 2. C#ウィンドウの入力を保存/読み込みしますか?
- 3. jpgを読み込んでトリミングして保存するC++
- 4. AutoCompleteCustomSource保存して読み込み
- 5. Perlループが読み込みファイルを読み込んでいませんか?
- 6. C++コンソール保存された「ゲーム」を保存して読み込み
- 7. Objective-C画像を保存してアプリに読み込み
- 8. C#ラベルからデータを保存し、テキストボックスから読み込み
- 9. メディアファイルがDjangoでメールに読み込まれない
- 10. iphoneメールでGoogleフォントが読み込まれないOswald
- 11. C#でのマルチフォーマット読み込みをZXingしていますか?
- 12. c#txtファイルの読み込み - 最後のファイルのみを読み込んでいます
- 13. NSURLSession/NSURLConnection HTTP読み込みに失敗しました(kCFStreamErrorDomainSSL、-9814).Webviewを読み込んでいますか?
- 14. C++での大きな配列の保存と読み込み
- 15. Laravel 5.3ファイルのディレクトリを保存して読み込みます
- 16. UIScrollViewの位置を保存して読み込みます
- 17. Android:読み込み/保存/エミュレートのフォルダがありません
- 18. PHP MailParseで受信メールを読み込んで処理する
- 19. C++でグラフを読み込み、維持しています
- 20. Pythonでリストを開いて読み込み、リストに保存します
- 21. XMLを読み込んでExcelに保存するC#
- 22. Java GUIの読み込みと保存
- 23. UIImagesの保存と読み込み
- 24. 画像の読み込み/保存misorder
- 25. イメージアレイの保存と読み込み
- 26. VB.NET:データを保存して読み込みますか?
- 27. iPhone SDK - 設定を読み込み/保存します
- 28. Tensorflowモデルを保存して読み込みます
- 29. UIImagePickerController - イメージを保存して読み込みますか?
- 30. ハッシュマップを保存してファイルに読み込みますか?
節約問題のどの部分ですか? XMLファイルかSQLデータベースのどちらかを選ぶのに問題はありますか? XMLファイルを作成する方法やSQLデータベースに保存する方法に問題がありますか?あなたの記憶表現はどのように見えますか?空想的なオブジェクトモデルか、単に 'byte []'を持っていますか? –
メールの内容をすべて保存します。私はXMLとSQlの間で問題を選択し、XMLを作成します。任意のメモリ。 – giaosudau