Подключение к Exchange Server

Для подключения к Exchange Server 2007, 2010 и 2013 с использованием Exchange Web Service Aspose.Email предоставляет интерфейс IEWSClient, который реализует класс EWSClient. Метод EWSClient.GetEWSClient создает и возвращает объект IEWSClient, который далее используется для выполнения операций, связанных с почтовым ящиком Exchange и другими папками. В этой статье показано, как создавать объекты IEWSClient.

Подключение к Exchange Server с использованием EWS

Следующий фрагмент кода показывает, как подключиться с использованием Exchange Web Service (EWS).

// Для полных примеров и файлов данных, пожалуйста, посетите https://github.com/aspose-email/Aspose.Email-for-.NET
private static IEWSClient GetExchangeEWSClient()
{
    const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx";
    const string domain = @"";
    const string username = @"username@ASE305.onmicrosoft.com";
    const string password = @"password";
    NetworkCredential credentials = new NetworkCredential(username, password, domain);
    IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials);
    return client;
}

Подключение к Exchange Server с использованием IMAP

Microsoft Exchange Server поддерживает протокол IMAP для доступа к элементам в почтовом ящике. Используйте класс Aspose.Email ImapClient для подключения к Exchange Server с использованием протокола IMAP. Для получения дополнительной информации о классе ImapClient сначала убедитесь, что службы IMAP включены для вашего Exchange Server:

  1. Откройте Панель управления.
  2. Перейдите в Административные инструменты, затем в Службы.
  3. Проверьте статус службы Microsoft Exchange IMAP4.
  4. Если она еще не запущена, включите/запустите ее.

Следующий фрагмент кода показывает, как подключиться и получить список сообщений из папки “Входящие” Microsoft Exchange Server, используя протокол IMAP.

// Для полных примеров и файлов данных, пожалуйста, посетите https://github.com/aspose-email/Aspose.Email-for-.NET
// Подключение к Exchange Server с использованием класса ImapClient
ImapClient imapClient = new ImapClient("ex07sp1", "Administrator", "Evaluation1");
imapClient.SecurityOptions = SecurityOptions.Auto;

// Выбор папки "Входящие"
imapClient.SelectFolder(ImapFolderInfo.InBox);

// Получение списка сообщений
ImapMessageInfoCollection msgCollection = imapClient.ListMessages();
foreach (ImapMessageInfo msgInfo in msgCollection)
{
    Console.WriteLine(msgInfo.Subject);
}
// Отключение от сервера
imapClient.Dispose();

Следующий фрагмент кода показывает, как использовать SSL.

// Для полных примеров и файлов данных, пожалуйста, посетите https://github.com/aspose-email/Aspose.Email-for-.NET
public static void Run()
{            
    // Подключение к Exchange Server с использованием класса ImapClient
    ImapClient imapClient = new ImapClient("ex07sp1", 993, "Administrator", "Evaluation1", new RemoteCertificateValidationCallback(RemoteCertificateValidationHandler));
    imapClient.SecurityOptions = SecurityOptions.SSLExplicit;

    // Выбор папки "Входящие"
    imapClient.SelectFolder(ImapFolderInfo.InBox);

    // Получение списка сообщений
    ImapMessageInfoCollection msgCollection = imapClient.ListMessages();
    foreach (ImapMessageInfo msgInfo in msgCollection)
    {
        Console.WriteLine(msgInfo.Subject);
    }
    // Отключение от сервера
    imapClient.Dispose();   
}

// Обработчик проверки сертификата
private static bool RemoteCertificateValidationHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true; // игнорировать проверки и продолжить
}

После подключения к Exchange Server с использованием IMAP и получения IMapMessageInfoCollection вы можете получить объект MessageInfo. Следующий фрагмент кода показывает, как использовать номер последовательности объекта MessageInfo для сохранения конкретного сообщения.

// Для полных примеров и файлов данных, пожалуйста, посетите https://github.com/aspose-email/Aspose.Email-for-.NET
// Выбор папки "Входящие"
imapClient.SelectFolder(ImapFolderInfo.InBox);
// Получение списка сообщений
ImapMessageInfoCollection msgCollection = imapClient.ListMessages();
foreach (ImapMessageInfo msgInfo in msgCollection)
{
    // Получение сообщения из входящих по его SequenceNumber из msgInfo
    MailMessage message = imapClient.FetchMessage(msgInfo.SequenceNumber);

    // Сохранение сообщения на диск
    message.Save(dataDir + msgInfo.SequenceNumber + "_out.msg", SaveOptions.DefaultMsgUnicode);
}

Установка предпочтительной версии протокола шифрования

EWS использует протокол передачи HTTPS для поддерживаемых операций. Шифрование обеспечивается протоколами SSL/TLS. Эти протоколы реализованы в .NET Framework и могут различаться в зависимости от текущей версии .NET Framework.

Чтобы установить версию SSL/TLS, используйте следующий код:

        var client = new ImapClient("some.host");
        client.SupportedEncryption = EncryptionProtocols.Tls13;

или

        var client = new ImapClient("some.host");
        client.SetSupportedEncryptionUnsafe(EncryptionProtocols.Tls13);

Обратите внимание, если указанный протокол шифрования не поддерживается текущей версией .NET Framework, свойство SupportedEncryption понижает протокол шифрования до поддерживаемого уровня, а метод SetSupportedEncryptionUnsafe вызывает исключение.