Свързване към SMTP сървър
Следните свойства трябва да бъдат зададени при свързване към SMTP сървър с поддръжка на SSL.
- SecurityOptions
- Порт
В примерите по-долу показваме как да:
- Задайте потребителско име.
- Задайте парола.
- Задайте порта.
- Задайте опция за сигурност.
Следният кодов пример показва как да се свържете със SMTP сървър, поддържащ SSL.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.gmail.com");
// Set username, password, port, and security options
client.setUsername("your.email@gmail.com");
client.setPassword("your.password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
Свързване към сървър чрез Socks прокси сървър
Понякога използваме прокси сървъри за комуникация с външния свят. В такива случаи имейл клиентите не могат да комуникират през Интернет без посочване на адреса на прокси. Aspose.Email поддържа версии 4, 4a и 5 на SOCKS прокси протокола. Тази статия предоставя работещ пример за изпращане на имейл чрез прокси пощенски сървър. За изпращане на имейл чрез прокси сървър:
- Инициализирайте прокси със нужната информация, а именно адрес на прокси, порт и SOCKS версия.
- Инициализиране SmtpClient с адреса на хоста, потребителско име и парола, както и други настройки.
- Задайте свойството Proxy на клиента на Прокси обект създаден по-рано.
Следният кодов пример показва как да се свържете към сървър чрез прокси сървър.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.SSLImplicit);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
"Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
Свързване към сървър чрез 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);
try (SmtpClient client = new SmtpClient("host", 587, "username", "password")) {
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
"Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
}
Персонализиране на механизъм за автентикация
Получете списъка с механизми за автентикация, поддържани от SMTP сървъра, като използвате getSupportedAuthentication метод на SmtpClient клас. Този метод позволява на клиента да определи кои методи за автентикация са достъпни за установяване на сигурна връзка със сървъра. След това, използвайки setAllowedAuthentication метод, който получава (или задава) изброяване на типове автентикация, разрешени от потребителя, изберете най‑подходящия механизъм за автентикация за комуникацията клиент‑сървър. Това ви позволява изрично да зададете метода на автентикация за имейл клиента.
Следният пример с код показва как да персонализирате автентикацията на имейл клиент:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);
Използване на CRAM-MD5 автентикация за свързване към сървър
За да гарантирате сигурна автентикация и комуникация със SMTP сървъра, можете да зададете и наложите използването на CRAM-MD5 като разрешения метод за автентикация за SMTP клиента. Следният кодов пример показва как да конфигурирате разрешения тип автентикация за SmtpClient:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);
Свържете SMTP клиент към конкретен IP адрес на хоста
Възможността хостът да разполага с няколко налични портове за изпращане на имейли не може да бъде изключена. В такива случаи може да се появи необходимост да се свърже клиентът за изпращане на имейли към конкретен порт на хоста за изпращане на имейли. Това може да се постигне и чрез Aspose.Email API, използвайки SmtpClient bindIPEndPoint свойство. API-то SmtpClient може да бъде зададено да използва конкретен IP адрес на хоста, като се посочи конкретната IP крайна точка. Следният кодов пример показва как да свържете SMTP клиент към конкретен IP адрес на хоста.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.domain.com", // host
587, // port
"username", // username
"password", // password
SecurityOptions.Auto // Security Options
);
try {
client.bindIPEndPoint(new BindIPEndPointHandler() {
public InetSocketAddress invoke(InetSocketAddress remoteEndPoint) {
return new InetSocketAddress(0);
}
});
client.noop();
} finally {
client.dispose();
}
Валидация на идентификационни данни на пощенски сървър без изпращане на имейл
Понякога е необходимо да се проверят идентификационните данни без изпращане на имейл. Aspose.Email предоставя validateCredentials() метод за изпълнение на тази операция. Ако валидирането е успешно, кодът вътре в if израза се изпълнява, обикновено се използва за извършване на допълнителни действия или извличане на данни от IMAP сървъра. Следният кодов фрагмент демонстрира валидирането на идентификационни данни без изпращане на имейл:
try (SmtpClient smtpClient = new SmtpClient(
server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
smtpClient.setTimeout(4000);
if (smtpClient.validateCredentials()) {
// to do something
}
}
Как да зададете време за изчакване за пощенски операции
Всяка пощенска операция отнема време в зависимост от много фактори (мрежови закъснения, размер на данните, производителност на сървъра и др.). Можете да зададете време за изчакване за всички пощенски операции. Примерният код по-долу ви показва как да направите това, като използвате Време за изчакване свойство. Забележка: не трябва да задавате големи стойности, за да избегнете дълги изчаквания във вашето приложение.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}