Чтение электронной почты Office365 с сервера Exchange с помощью. Net C# клиента IMAP - PullRequest
1 голос
/ 10 марта 2020

Я пишу консольное приложение Windows для чтения электронной почты из специально настроенной учетной записи электронной почты на Office365. Учетная запись полностью настроена, и мы можем получать электронные письма из Outlook. Консольное приложение будет запускаться по расписанию с удаленного сервера и извлекать указанные c вложения из указанных c сообщений электронной почты, а затем перемещать эти сообщения в другую папку. Я решил использовать библиотеку MailKit из MimeKit и начал кодировать небольшое тестовое приложение, которое я перечисляю ниже:

Когда я запускал отладчик для этого кода, я сталкиваюсь с ошибкой в ​​client.Authenticate за исключением возбуждается как «AuthenticationException». Имя пользователя и пароль, которые я использую в своем коде, правильные и те же, что и в Outlook. Я делаю основы прямо здесь? Могу ли я предоставить пароль в виде обычного текста или мне нужен специальный формат c? Пожалуйста, дайте мне знать, если я не предоставил всю информацию услышать, и я получу их и отправлю здесь.

using MailKit.Net.Imap;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace CAppHarvestEmail
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var userName = "bi@mydomain.co";
                var passWord = "mybipassword";
                using (var client = new ImapClient())
                {
                    client.Connect("outlook.office365.com", true);
                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                    client.Authenticate(userName, passWord);
                    var inbox = client.Inbox;
                    inbox.Open(MailKit.FolderAccess.ReadOnly);
                    Console.WriteLine("Total messages: {0}", inbox.Count);
                    Console.WriteLine("Recent messages: {0}", inbox.Recent);
                    client.Disconnect(true);
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 10 марта 2020

предоставить порт 993, и вы можете использовать SecureSocketOptions.Auto

0 голосов
/ 02 апреля 2020

Я прибег к использованию веб-службы Microsoft Exchange вместо IMAP.

0 голосов
/ 10 марта 2020

Вам необходимо сгенерировать пароль приложения для вашего приложения https://support.office.com/en-us/article/create-an-app-password-for-office-365-3e7c860f-bda4-4441-a618-b53953ee1183 и изменить строку

client.Connect("outlook.office365.com", 993, SecureSocketOptions.SslOnConnect);
...