Підключення до IMAP сервера
The ImapClient клас дозволяє застосункам керувати IMAP‑скриньками, використовуючи протокол IMAP. ImapClient клас використовується для підключення до IMAP‑mail серверів та керування електронними листами у IMAP‑папках. Щоб підключитися до IMAP‑сервера
- Створіть екземпляр ImapClient клас.
- Вкажіть ім’я хосту, ім’я користувача та пароль у Конструктор ImapClient.
Як тільки ImapClient екземпляр ініціалізовано, наступний виклик будь-якої операції з цим екземпляром підключиться до сервера. Нижче наведений фрагмент коду показує, як підключитися до IMAP‑сервера, використовуючи вищенаведені кроки.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
Підключення до IMAP сервера з SSL
Підключення до IMAP сервера описано, як підключитися до IMAP‑сервера у чотири простих кроки:
- Створіть екземпляр ImapClient клас.
- Вкажіть ім’я хосту, ім’я користувача та пароль.
- Вкажіть порт.
- Вкажіть Опції безпеки.
Процес підключення до IMAP‑сервера з увімкненим SSL схожий, проте вимагає встановлення декількох додаткових властивостей:
- Встановити Опції безпеки до SSLImplicit.
Нижче наведений фрагмент коду показує, як
- Вкажіть ім’я користувача, пароль та порт.
- Встановіть параметр безпеки.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
Підключення до сервера через проксі
Проксі‑сервери часто використовуються для зв’язку зі світом. У таких випадках поштові клієнти не можуть підключитися до Інтернету без указання адреси проксі. Aspose.Email підтримує версії 4, 4a та 5 протоколу SOCKS. У цій статті представлений робочий приклад доступу до скриньки через проксі‑mail сервер. Щоб отримати доступ до скриньки через проксі‑сервер:
- Ініціалізувати SocksProxy з необхідною інформацією, а саме адресою проксі, портом та версією SOCKS.
- Ініціалізувати ImapClient з адресою хосту, ім’ям користувача, паролем та іншими налаштуваннями.
- Встановити клієнт SocksProxy властивість до SocksProxy об’єкт, створений вище.
Нижче наведений фрагмент коду показує, як отримати поштову скриньку через проксі‑сервер.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(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.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
Підключення до сервера через HTTP‑проксі
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
Налаштування механізму автентифікації
Отримати список механізмів автентифікації, підтримуваних IMAP‑сервером, використовуючи getSupportedAuthentication метод ImapClient клас. Цей метод дозволяє клієнту визначити, які методи автентифікації доступні для встановлення захищеного з’єднання з сервером. Потім, використовуючи setAllowedAuthentication метод, який отримує (або встановлює) перелік типів автентифікації, дозволених користувачем, обирайте найбільш підходящий механізм автентифікації для взаємодії клієнт‑сервер. Це дозволяє явно встановити метод автентифікації для поштового клієнта.
Нижче наведено зразок коду, який показує, як налаштувати автентифікацію клієнта електронної пошти:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Підключення до сервера у режимі лише для читання
The ImapClient клас забезпечує ReadOnly властивість, яка при встановленому значенні true вказує, що не слід вносити зміни у постійний стан скриньки. Нижче наведений приклад коду демонструє використання ImapClient.ReadOnly властивості. Вона отримує кількість непрочитаних повідомлень, потім завантажує одне повідомлення і знову отримує кількість непрочитаних повідомлень у режимі лише для читання. Кількість непрочитаних повідомлень залишається такою ж, що вказує на те, що постійний стан скриньки не змінився.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
Використання автентифікації CRAM‑MD5 для підключення до сервера
Щоб забезпечити безпечну автентифікацію та зв’язок з IMAP‑сервером, ви можете вказати та примусово використовувати CRAM-MD5 як дозволений метод автентифікації для IMAP‑клієнта. Нижче наведений фрагмент коду показує, як налаштувати дозволений тип автентифікації для ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
Перевірка облікових даних поштового сервера без надсилання листа
Іноді необхідно перевірити облікові дані без надсилання листа. Aspose.Email надає validateCredentials() метод для виконання цієї операції. Якщо валідація успішна, виконується код всередині if, зазвичай використовується для подальших дій або отримання даних з IMAP‑сервера. Наступний фрагмент коду демонструє валідацію облікових даних без надсилання листа:
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
Як встановити тайм-аут для поштових операцій
Кожна поштові операція займає певний час залежно від багатьох факторів (затримки мережі, розмір даних, продуктивність сервера тощо). Ви можете встановити тайм-аут для всіх поштових операцій. Нижче наведено приклад коду, який демонструє, як це зробити за допомогою Тайм-аут властивість. Примітка: не варто встановлювати великі значення, аби уникнути тривалих очікувань у вашому застосунку.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Як обмежити тайм‑аут привітання
IMAP‑клієнт може використовувати автоматичний режим встановлення з’єднання. У цьому режимі IMAP‑клієнт перебирає всі можливі параметри з’єднання, доки не встановиться з’єднання. У випадку успішного підключення IMAP‑сервер надсилає рядок привітання клієнту. Сервери можуть ініціювати SSL/TLS з’єднання явно (START TLS) або неявно. Якщо режим з’єднання не відповідає (наприклад, сервер очікує неявне SSL‑з’єднання, а клієнт намагається встановити незахищене або явне SSL‑з’єднання), сервер не надсилає рядок привітання, і користувач довго чекає, доки не спливе тайм‑аут, після чого клієнт переходить до наступної опції підключення. Щоб уникнути цієї проблеми, було введено властивість GreetingTimeout. Ця властивість дозволяє встановити тайм‑аут для рядка привітання та скоротити час автоматичного встановлення з’єднання.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);