Member 10872485 Ответов: 1

Как читать и анализировать (тема, тело, вложения ...) электронное письмо из Outlook (добавить в C#)


Для чтения и анализа (тема, тело, вложения ...) электронной почты из Outlook (добавить в C#) я попытался написать эту функцию :

using Outlook = Microsoft.Office.Interop.Outlook; 
 
public void readEmail()
{
  try
  {
    Outlook.Application myApp = new Outlook.ApplicationClass();
    Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
    Outlook.MAPIFolder myInbox =         mapiNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
 
    MessageBox.Show(myInbox.Items.Count + "");
 
    //Read all the email one by one
    //for (int i = myInbox.Items.Count; i >= (myInbox.Items.Count-1); i--)
    //{
      //String strSubject = ((Outlook.MailItem)myInbox.Items[i]).Subject;
      // Sender Email
      //string senderEmailid = ((Outlook.MailItem)myInbox.Items[i]).SenderEmailAddress;
      //string CreationTime=(( //Outlook.MailItem)myInbox.Items[i]).CreationTime.ToString();

      //string strEmailBody=(( Outlook.MailItem)myInbox.Items[i]).Body;

      //string strEmailSenderName=(( Outlook.MailItem)myInbox.Items[i]).SenderName;
     //}
  }
  catch(Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
}


но "мой почтовый ящик.Предметы.Count" равен 0, и если я попытаюсь отобразить одну из переменных (например, strEmailBody), она выдаст исключение : индекс массива выходит за пределы привязки.

Кто-нибудь может мне помочь, пожалуйста ???

jo.him1988

как вы получаете доступ к своей учетной записи outlook вы забыли упомянуть об этом
mapiNameSpace.Входа(нуль, нуль, ложное, ложное);

mapiNameSpace.Логон("ваш Outlook почты", "пароль", отсутствует.Значение, true);

вот код скрипта :-

1 Ответов

Рейтинг:
12

jo.him1988

 Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();
            Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
            Microsoft.Office.Interop.Outlook.MAPIFolder myContacts = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts);

            //login
            mapiNameSpace.Logon(null, null, false, false);

            mapiNameSpace.Logon("YourOutlookMailID", "Password", Missing.Value, true);


            Microsoft.Office.Interop.Outlook.Items myItems = myContacts.Items;

           // Console.WriteLine("Total : ", myItems.Count);

            Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);

          //  Console.Write(myInbox.Name);

            Microsoft.Office.Interop.Outlook.Items inboxItems = myInbox.Items;

           // Console.WriteLine("Total : ", inboxItems.Count);

            Microsoft.Office.Interop.Outlook.Explorer myexp = myInbox.GetExplorer(false);

            mapiNameSpace.Logon("Profile", Missing.Value, false, true);



            if (myInbox.Items.Count > 0)
            {
            Console.WriteLine(string.Format("Total Unread message {0}:", inboxItems.Count));
                int x=0;
                foreach (Microsoft.Office.Interop.Outlook.MailItem item in inboxItems)
                {
                    Console.WriteLine("{0} unread mail from your inbox", ++x);
                    Console.WriteLine(string.Format("from:-       {0}", item.SenderName));
                    Console.WriteLine(string.Format("To:-         {0}", item.ReceivedByName));
                    Console.WriteLine(string.Format("Subject:-     {0}", item.Subject));
                    Console.WriteLine(string.Format("Message:-     {0}", item.Body));
                    System.Threading.Thread.Sleep(1000);
                }
                Console.ReadKey();
}

<pre></pre>

счастливое кодирование :) :) :)