Чтение / извлечение электронных писем из учетной записи Outlook (Office 365)

#c# #outlook #office365

#c# #outlook #office365

Вопрос:

Я настроил свою учетную запись Outlook Office 365 и хочу получать электронные письма из своего почтового ящика Outlook, ранее мы использовали службу Exchange в нашем коде, но теперь мы больше не можем использовать службу Exchange из-за того, что EWS his больше не доступен в Microsoft.

Не могли бы вы помочь мне, как я могу получить свои электронные письма из учетной записи Outlook office 365.

Я прилагаю образец кода, который я создал, но я не могу прочитать электронные письма.

В приведенном ниже коде я попытался получить электронную почту через сервер протокола IMAP4. Когда я запускаю код, я получаю эту ошибку — ReceiveOutlookMail.exe ‘ вышел с кодом 0 (0x0).

 class Program
{
    // Generate an unqiue email file name based on date time
    static string _generateFileName(int sequence)
    {
        DateTime currentDateTime = DateTime.Now;
        return string.Format("{0}-{1:000}-{2:000}.eml",
            currentDateTime.ToString("yyyyMMddHHmmss", new CultureInfo("en-US")),
            currentDateTime.Millisecond,
            sequence);
    }

    static void Main(string[] args)
    {
        try
        {
            // Create a folder named "inbox" under current directory
            // to save the email retrieved.
            string localInbox = string.Format("{0}\inbox", Directory.GetCurrentDirectory());
            // If the folder is not existed, create it.
            if (!Directory.Exists(localInbox))
            {
                Directory.CreateDirectory(localInbox);
            }

            // Hotmail/MSN IMAP4 server is "imap-mail.outlook.com"
            //MailServer oServer = new MailServer("imap-server-name",
             //   "liveid@hotmail.com", "yourpassword", ServerProtocol.Imap4);

            // For office 365 user, please change server to:
            MailServer oServer = new MailServer("imap-server-name",
                "test@gmail.com", "password", ServerProtocol.Imap4);

            // Enable SSL connection.
            oServer.SSLConnection = true;

            // Set 993 SSL port
            oServer.Port = 993;

            MailClient oClient = new MailClient("TryIt");
            oClient.Connect(oServer);

            // retrieve unread/new email only
            oClient.GetMailInfosParam.Reset();
            oClient.GetMailInfosParam.GetMailInfosOptions = GetMailInfosOptionType.NewOnly;

            MailInfo[] infos = oClient.GetMailInfos();
            Console.WriteLine("Total {0} unread email(s)rn", infos.Length);
            for (int i = 0; i < infos.Length; i  )
            {
                MailInfo info = infos[i];
                Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}",
                    info.Index, info.Size, info.UIDL);

                // Receive email from IMAP4 server
                Mail oMail = oClient.GetMail(info);

                Console.WriteLine("From: {0}", oMail.From.ToString());
                Console.WriteLine("Subject: {0}rn", oMail.Subject);

                // Generate an unqiue email file name based on date time.
                string fileName = _generateFileName(i   1);
                string fullPath = string.Format("{0}\{1}", localInbox, fileName);

                // Save email to local disk
                oMail.SaveAs(fullPath, true);

                // mark unread email as read, next time this email won't be retrieved again
                if (!info.Read)
                {
                    oClient.MarkAsRead(info, true);
                }

                // if you don't want to leave a copy on server, please use
                // oClient.Delete(info);
                // instead of MarkAsRead
            }

            // Quit and expunge emails marked as deleted from IMAP4 server.
            oClient.Quit();
            Console.WriteLine("Completed!");
        }
        catch (Exception ep)
        {
            Console.WriteLine(ep.Message);
        }
    }
}
  

}

Комментарии:

1. См . Следующее : emailarchitect.net/eagetmail/kb/csharp.aspx?cat=1

2. @jdweng да, я взял код только из этой ссылки, когда я запускаю код, я получаю это сообщение об ошибке — «Сбой операции сокета, потому что хост назначения не работает»

3. Работает ли код с вашего домашнего компьютера? Сбой происходит только в сети вашей компании? Я думаю, что это может быть проблема с номером порта. Проверьте с помощью своего MIS номер порта. Некоторые компании используют разные номера портов. Возможно, у вас есть брандмауэр или средство проверки на вирусы, которое блокирует порт. Также проверьте правильность URL-адреса сервера.

4. EWS очень доступен и поддерживается. Они только что сказали, что будут инвестировать в новые функции в Graph. Но EWS все еще существует, и сама MS использует его внутри для некоторых функций (например, OOF)

5. @DmitryStreblechenko Я согласен, но они удалили базовую аутентификацию из EWS. Итак, как мы можем выполнить проверку подлинности при использовании EWS?