Подключение к серверу IMAP
The ImapClient класс позволяет приложениям управлять почтовыми ящиками IMAP с помощью протокола IMAP. ImapClient класс используется для подключения к почтовым серверам IMAP и управления электронной почтой в папках электронной почты IMAP. Для подключения к серверу IMAP
- Создайте экземпляр ImapClient class.
- Укажите имя хоста, имя пользователя и пароль в поле Конструктор IMAP-клиентов.
Обратите внимание, что ограничения по паролям должны соответствовать требованиям сервера. Почтовый клиент не добавляет ограничений по паролям.
Как только ImapClient экземпляр инициирован, следующий вызов любой операции с использованием этого экземпляра подключится к серверу. В следующем фрагменте кода показано, как подключиться к серверу IMAP, используя описанные выше шаги.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
Подключение к серверу IMAP с поддержкой SSL
Подключение к серверу IMAP описал, как подключиться к серверу IMAP за четыре простых шага:
- Создайте экземпляр ImapClient class.
- Укажите имя хоста, имя пользователя и пароль.
- Укажите порт.
- Укажите параметры безопасности.
Процесс подключения к серверу IMAP с поддержкой SSL аналогичен, но требует установки еще нескольких свойств:
- Задайте для параметров безопасности значение SSLimplicit.
В следующем фрагменте кода показано, как
- Задайте имя пользователя, пароль и порт.
- Задайте параметр безопасности.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Создайте экземпляр ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.SecurityOptions = SecurityOptions.SSLImplicit;
Подключение к серверу через прокси-сервер
Прокси-серверы обычно используются для связи с внешним миром. В таких случаях почтовые клиенты не могут обмениваться данными через Интернет без указания адреса прокси-сервера. Aspose.Email обеспечивает поддержку версий 4, 4a и 5 протокола прокси-сервера SOCKS. В этой статье представлен рабочий пример доступа к почтовому ящику с помощью прокси-почтового сервера. Чтобы получить доступ к почтовому ящику через прокси-сервер, выполните следующие действия:
- Initialize SocksProxy с необходимой информацией, то есть адресом прокси-сервера, портом и версией SOCKS.
- Initialize ImapClient с адресом хоста, именем пользователя, паролем и любыми другими настройками.
- Установите значение клиента SocksProxy собственность клиента в пользу SocksProxy объект, созданный выше.
В следующем фрагменте кода показано, как получить почтовый ящик через прокси-сервер.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.SecurityOptions = SecurityOptions.Auto;
string proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.Proxy = proxy;
try
{
client.SelectFolder("Inbox");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Подключение к серверу через HTTP-прокси-сервер
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
using (ImapClient client = new ImapClient("imap.domain.com", "username", "password"))
{
client.Proxy = proxy;
client.SelectFolder("Inbox");
}
Подключение к серверу в режиме «только для чтения»
The ImapClient класс предоставляет ReadOnly свойство, для которого задано значение true, указывает на то, что не следует вносить никаких изменений в постоянное состояние почтового ящика. Следующий пример кода демонстрирует использование ImapClient.ReadOnly имущество. Оно определяет количество непрочитанных сообщений, затем извлекает одно сообщение, а затем снова получает количество непрочитанных сообщений в режиме «только для чтения». Количество непрочитанных сообщений осталось прежним, что означает, что постоянное состояние почтового ящика не изменилось.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
ImapClient imapClient = new ImapClient();
imapClient.Host = "<HOST>";
imapClient.Port = 993;
imapClient.Username = "<USERNAME>";
imapClient.Password = "<PASSWORD>";
imapClient.SupportedEncryption = EncryptionProtocols.Tls;
imapClient.SecurityOptions = SecurityOptions.SSLImplicit;
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.HasNoFlags(ImapMessageFlags.IsRead); /* get unread messages. */
MailQuery query = imapQueryBuilder.GetQuery();
imapClient.ReadOnly = true;
imapClient.SelectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.ListMessages(query);
Console.WriteLine("Initial Unread Count: " + messageInfoCol.Count());
if (messageInfoCol.Count() > 0)
{
imapClient.FetchMessage(messageInfoCol[0].SequenceNumber);
messageInfoCol = imapClient.ListMessages(query);
// This count will be equal to the initial count
Console.WriteLine("Updated Unread Count: " + messageInfoCol.Count());
}
else
{
Console.WriteLine("No unread messages found");
}
Подключение к серверу с использованием аутентификации CRAM-MD5
Для безопасной аутентификации и доступа к почтовому серверу Aspose.Email for .NET предлагает метод аутентификации CRAM-MD5. Следующий фрагмент кода покажет вам, как он работает с IMapClient:
imapClient.AllowedAuthentication = ImapKnownAuthenticationType.CramMD5;
Как установить тайм-аут для почтовых операций
Каждая почтовая операция занимает некоторое время в зависимости от многих факторов (сетевых задержек, размера данных, производительности сервера и т. д.). Можно установить тайм-аут для всех почтовых операций. В приведенном ниже примере кода показано, как это сделать с помощью Timeout имущество. Примечание: не следует устанавливать большие значения, чтобы избежать длительного ожидания в приложении.
using (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.Timeout = 60000; // 60 seconds
// some code...
}
Как ограничить тайм-аут приветствия
Клиент IMAP может использовать автоматический режим для установления соединения. В этом режиме клиент IMAP проверяет все возможные параметры соединения до тех пор, пока соединение не будет установлено. Сервер IMAP в случае правильного соединения отправляет клиенту строку приветствия. Серверы могут использовать неявное или явное (START TLS) инициирование соединения SSL/TLS. Если режим соединения не совпадает (например, сервер ожидает неявного SSL-соединения, но клиент пытается установить незащищенное или явное SSL-соединение), сервер не отправит строку приветствия, а пользователь будет долго ждать, пока тайм-аут не достигнет строки приветствия, и клиент перейдет к следующему варианту подключения. Чтобы избежать этой проблемы, было введено свойство greetingTimeout. Это свойство позволяет установить тайм-аут для строки приветствия и сократить время автоматического установления соединения.
using (ImapClient client = new ImapClient("localhost", 993, "username", "password"))
{
client.GreetingTimeout = 4000;
client.SelectFolder(ImapFolderInfo.InBox);
}
Использование криптографических протоколов с клиентом IMAP
Aspose.Email поддерживает криптографические протоколы SSL (устаревшие) и TLS для обеспечения безопасности связи. Для защиты обмена данными между приложением и почтовыми серверами можно включить криптографическое шифрование.
NOTE: Следует устанавливать только те версии протокола, которые поддерживаются платформе.NET Framework. Если некоторые версии криптографического протокола не поддерживаются текущей версией .NET Framework, они будут проигнорированы и пропущены. В этом случае исключения не будут созданы. Пожалуйста, используйте SetSupportedEncryptionUnsafe метод, если вы хотите установить протоколы без каких-либо проверок совместимости.
В приведенном ниже примере кода показано, как установить TLS 1.3 для ImapClient экземпляр класса.
using (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.SupportedEncryption = EncryptionProtocols.Tls13;
// some code...
}
В случае, если указанный протокол шифрования не поддерживается в текущей версии .NET Framework, разница в поведении между SetSupportedEncryptionUnsafe метод и SupportedEncryption свойство следующее:
- If SupportedEncryption используется свойство, почтовый клиент понижает протокол шифрования до поддерживаемого уровня.
- If SetSupportedEncryptionUnsafe используется метод, почтовый клиент генерирует исключения.