2

を使用してメールを送信する方法の例はたくさんありますが、メールアカウントをチェックするアクションを実行したいと考えています。

誰かがそれができるかどうか知っていますか(それができると確信しています)そして私にいくつかの例を指摘しますか?

4

2 に答える 2

3

Gmailの受信トレイを取得する方法はいくつかあります。

OpenPop

POPだけを使用したい場合で、外部ライブラリを使用してもかまわない場合は、これが最善/最も簡単な方法のように見えます。OpenPopを使用すると、安全な/安全でない電子メールアカウントにアクセスし、ポートを選択できます。開始するには、この投稿を参照してください。

OpenPopは、メールのフェッチと解析を実装するオープンソースのC#.NETコードバンドルです。この記事の執筆時点では、必要な処理を行うためにMicrosoft.NETFrameworkライブラリのみを使用しています。ただし、安全なポップサーバーにアクセスするために、SSLライブラリを使用してopenPopを拡張できます。

たとえば、Pop経由でGmailにアクセスするには:

POPClient poppy = new POPClient();
poppy.Connect("pop.gmail.com", 995, true);
poppy.Authenticate(username@gmail.com, "password");
int Count = poppy.GetMessageCount();
if (Count > 0)
{
   for (int i = Count; i >= 1; i -= 1)
   {
     OpenPOP.MIMEParser.Message m = poppy.GetMessage(i, false);
     //use the parsed mail in variable 'm'
   }
}

TcpClient POP3:

Pop3を介して任意のプロバイダーから電子メールを取得するには、TcpClientを使用できます。Gmailでは、POPにSSLとポート995を使用するため、わずかな違いがあります。ここにその例があります:

// create an instance of TcpClient 

TcpClient tcpclient = new TcpClient();     

// HOST NAME POP SERVER and gmail uses port number 995 for POP 

tcpclient.Connect("pop.gmail.com", 995); 

// This is Secure Stream // opened the connection between client and POP Server

System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream());

// authenticate as client  

 sslstream.AuthenticateAsClient("pop.gmail.com");

Gmail Atomフィード:

最初の方法は、 C#.NetGmailToolsGmailAtomFeedの一部であるを使用することです。ウェブサイトは言う:

GmailAtomFeedクラスは、GmailのAtomフィードにプログラムでアクセスするためのシンプルなオブジェクトレイヤーを提供します。ほんの数行のコードで、フィードはGmailから取得され、解析されます。その後、オブジェクトレイヤーAtomFeedEntryCollectionを介してエントリにアクセスできるほか、生のフィードとフィードXmlDocumentにアクセスすることもできます。

そして、これはあなたがそれをどのように使うかの例です:

   // Create the object and get the feed 
   RC.Gmail.GmailAtomFeed gmailFeed = new RC.Gmail.GmailAtomFeed("username", "password"); 
   gmailFeed.GetFeed(); 

   // Access the feeds XmlDocument 
   XmlDocument myXml = gmailFeed.FeedXml 

   // Access the raw feed as a string 
   string feedString = gmailFeed.RawFeed 

   // Access the feed through the object 
   string feedTitle = gmailFeed.Title; 
   string feedTagline = gmailFeed.Message; 
   DateTime feedModified = gmailFeed.Modified; 

   //Get the entries 
   for(int i = 0; i < gmailFeed.FeedEntries.Count; i++) { 
      entryAuthorName = gmailFeed.FeedEntries[i].FromName; 
      entryAuthorEmail = gmailFeed.FeedEntries[i].FromEmail; 
      entryTitle = gmailFeed.FeedEntries[i].Subject; 
      entrySummary = gmailFeed.FeedEntries[i].Summary; 
      entryIssuedDate = gmailFeed.FeedEntries[i].Received; 
      entryId = gmailFeed.FeedEntries[i].Id; 
   }

IMAP

もう1つの方法は、POPに限定されていない場合は、IMAPを使用することです。IMAPを使用すると、SSLサーバーに接続し、それに伴ってポートを選択できます。

using (Imap imap = new Imap())
{
    imap.ConnectSSL("imap.gmail.com", 993);
    imap.Login("angel_y@company.com", "xyx***"); // MailID As Username and Password

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
} 
于 2013-01-05T14:23:16.120 に答える
1

このコードをオンラインで見つけましたが、「POP3_Client」が認識されず、追加するための参照が表示されません。

 POP3_Client Mailbox = new POP3_Client(new >>>>IntegratedSocket<<<<<("pop.yourisp.com", 110), "yourusername", "yourpassword");
            Mailbox.Connect();
            Debug.Print("Message count: " + Mailbox.MessageCount.ToString());
            Debug.Print("Box size in bytes: " + Mailbox.BoxSize.ToString());

            uint[] Id, Size;
            Mailbox.ListMails(out Id, out Size);
            for (int Index = 0; Index < Id.Length; ++Index)
            {
                string[] Headers = Mailbox.FetchHeaders(Id[Index], new string[] { "subject", "from", "date" });
                Debug.Print("Mail ID " + Id[Index].ToString() + " is " + Size[Index].ToString() + " bytes");
                Debug.Print("Subject: " + Headers[0]);
                Debug.Print("From: " + Headers[1]);
                Debug.Print("Date: " + Headers[2]);
                Debug.Print("======================================================================");
            }

            Mailbox.Close();
于 2012-12-30T16:01:17.273 に答える