Свързване към IMAP сървър
Този ImapClient класът позволява на приложенията да управляват IMAP пощенски кутии, използвайки IMAP протокола. The ImapClient класът се използва за свързване към IMAP пощенски сървъри и управление на имейли в 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 прокси протокола. Тази статия предоставя работен пример за достъп до пощенската кутия чрез прокси имейл сървър. За достъп до пощенската кутия чрез прокси сървър:
- Инициализиране 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 proxy
// 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);
Свързване към сървъра в режим само за четене
Този 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...
}
Как да ограничим Greeting Timeout
IMAP клиентът може да използва автоматичен режим за установяване на връзка. В този режим клиентът преминава през всички възможни параметри за връзка, докато се установи връзка. При правилна връзка IMAP сървърът изпраща поздравителен низ към клиента. Сървърите могат да използват имплицитно или експлицитно (START TLS) иницииране на SSL/TLS връзка. Ако режимът на връзка не съвпада (например сървърът очаква имплицитна SSL връзка, а клиентът се опитва да установи незащитена или експлицитна SSL връзка), сървърът няма да изпрати поздравителен низ и потребителят ще чака дълго, докато тайм‑аутът достигне поздравителен низ, след което клиентът преминава към следващата опция за връзка. За да се избегне този проблем, е въведен GreetingTimeout. Това свойство ви позволява да зададете тайм‑аут за поздравителния низ и да намалите времето за автоматично установяване на връзка.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);