Оптимизиране на връзката към SMTP сървъра
Оптимизация на връзките на имейл клиента
Потребителите често срещат закъснения поради настройките за таймаут по подразбиране, което може да доведе до продължително време за свързване или дори неуспешни опити.
За да подобрите ефективността на тези връзки, Aspose.Email за .NET предлага свойства като Време за изчакване и GreetingTimeout. Въпреки че Timeout свойство управлява общата продължителност за имейл операции, GreetingTimeout свойство, което конкретно цели времето, необходимо на сървъра да изпрати приветстващ низ при установяване на връзка.
В следващия раздел ще разгледаме как да конфигурираме тези настройки, за да подобрим скоростта и надеждността на връзката на вашия имейл клиент.
Когато използвате Timeout свойство, важно е да се отбележи, че стойностите, зададени на него, трябва да имат достатъчно дълги интервали, за да обслужват дълги операции.
Въпреки това, ако разчитате единствено на това свойство, установяването на връзка може да отнеме повече време от очакваното. Това може да се случи, когато имейл клиентът използва автоматичен режим за установяване на връзка. В този режим клиентът преминава през различни параметри на връзката, докато се установи връзка.
Когато се свързвате със SMTP, IMAP и POP3 сървъри, при успешно установяване на връзка се изпраща приветстващ низ към клиента. Сървърите могат да използват имплицитно или експлицитно (START TLS) иницииране на SSL/TLS връзка. В случаи, когато режимът на връзка не съвпада (например сървърът очаква имплицитна SSL връзка, а клиентът се опитва да установи небезопасна или експлицитна SSL връзка), сървърът няма да изпрати приветстващия низ.
В резултат потребителят може да чака продължително време, докато се достигне таймаутът, и клиентът преминава към следващата опция за връзка.
За да се справим с този проблем, GreetingTimeout свойство беше въведено. Това свойство позволява на потребителите да зададат таймаут за приветстващия низ, намалявайки времето, необходимо за установяване на автоматична връзка. Чрез прилагане на GreetingTimeout свойството, потребителите могат да оптимизират производителността на имейл клиента си и да избегнат дълги времена на изчакване по време на установяване на връзката.
Следният пример на код показва как да се зададе EmailClient.GreetingTimeout свойство:
using (SmtpClient client = new SmtpClient("localhost", 25, "username", "password"))
{
client.GreetingTimeout = 4000;
}
Получаване на разширения на сървъра
Този SmtpClient ви позволява да извлечете разширенията, които сървърът поддържа, като IDLE, UNSELECT, QUOTA и др. Това помага за идентифициране на наличността на разширението преди да се използва клиентът за конкретната функция. The GetCapabilities() методът връща поддържаните типове разширения във формата на масив от низове.
Следният кодов фрагмент ви показва как да извлечете разширенията на сървъра.
Проверка на идентификационните данни на пощенския сървър без изпращане на имейли
Aspose.Email API предоставя възможност за проверка на идентификационните данни на пощенския сървър без изпращане на имейл. Това може да се постигне с ValidateCredentials метод, който отговаря за проверка на автентичността и правилността на предоставените имейл идентификационни данни, които обикновено се използват за удостоверяване при свързване със сървъра.
Той проверява дали предоставените имейл идентификационни данни, като потребителско име и парола, са валидни и дали клиентът може да установи успешна връзка със сървъра. Това проверяване помага да се гарантира, че клиентът може безопасно да достъпи имейл акаунта и да извършва различни операции, като изпращане на имейл.
using (SmtpClient client = new SmtpClient(server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto))
{
client.Timeout = 4000;
if (client.ValidateCredentials())
{
//to do something
}
}
Съществува и версия на метода ValidateCredentialsAsync за извършване на асинхронна операция.
Изпращане на имейл чрез SOCKS прокси сървър
В такива случаи имейл клиентите не могат да комуникират през Интернет без да посочат адреса на прокси. Aspose.Email предоставя поддръжка за версии 4, 4a и 5 на SOCKS протокола. За да изпратите имейл чрез прокси сървър, изпълнете следните стъпки:
- Инициализирайте прокси със нужната информация, а именно адрес на прокси, порт и SOCKS версия.
- Инициализиране SmtpClient с адреса на хоста, потребителско име и парола, както и други настройки.
- Задайте свойството Proxy на клиента на Прокси обект създаден по-рано.
Следният кодов пример показва как да се свържете към сървър чрез прокси сървър.
Изпращане на имейл чрез HTTP прокси сървър
Идентифициране на методи за удостоверяване за сигурна SMTP връзка
Aspose.Email предлага свойства, които позволяват проверка кои методи за удостоверяване могат да се използват за установяване на сигурна връзка със SMTP сървъра преди изпращане на имейл:
- the SmtpClient.SupportedAuthentication свойството връща списък от методи за удостоверяване, поддържани от SMTP сървъра.
- the SmtpClient.AllowedAuthentication свойството връща списък от методи за удостоверяване, дефинирани от потребителя.
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.Login;
Зареждане на информация за SMTP удостоверяване от конфигурационен файл
За да може Aspose.Email да прочете конфигурационен файл, той трябва да е в правилния формат. По-долу показваме примерен XML конфигурационен файл, последван от кода, който го чете. Следният фрагмент от код показва как да заредите информация за SMTP удостоверяване от конфигурационен файл.
След като конфигурационните настройки са дефинирани, заредете ги директно в инстанция на SmtpClient клас, използващ един от претоварените си конструктори. Следният фрагмент от код демонстрира четене на конфигурационните настройки от конфигурационния файл и директно зареждане в инстанцията на SmtpClient.
Свързване на SMTP клиент към конкретен IP адрес
Възможността хостът да разполага с няколко налични портове за изпращане на имейли не може да бъде изключена. В такива случаи може да се появи необходимост да се свърже клиентът за изпращане на имейли към конкретен порт на хоста за изпращане на имейли. Това може да се постигне и чрез Aspose.Email API, използвайки SmtpClient BindIPEndPoint свойство. API‑то SmtpClient може да бъде зададено да използва конкретен IP адрес на хоста, като се посочи конкретната IP крайна точка. Следният кодов пример показва как да свържете SMTP клиент към конкретен IP адрес на хоста.
Задаване на таймаут за имейл операции
Всяка пощенска операция отнема време в зависимост от много фактори (мрежови закъснения, размер на данните, производителност на сървъра и др.). Можете да зададете време за изчакване за всички пощенски операции. Примерният код по-долу ви показва как да направите това, като използвате Време за изчакване свойство.
Забележка: не трябва да задавате големи стойности, за да избегнете дълги чакания във вашето приложение.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.Timeout = 60000; // 60 seconds
// some code...
}
Използване на криптографски протоколи
Aspose.Email поддържа SSL (остаряло) и TLS криптографски протоколи за осигуряване на сигурност на комуникациите. Можете да активирате криптографско шифроване за защита на обмена на данни между вашето приложение и пощенските сървъри.
ЗАБЕЛЕЖКА: Трябва да задавате само тези версии на протокола, които се поддържат от .NET Framework. Ако някои версии на криптографския протокол не се поддържат от текущата ви версия на .NET Framework, те ще бъдат игнорирани и пропуснати. В този случай няма да се генерират изключения. Моля, използвайте SetSupportedEncryptionUnsafe метод, ако искате да зададете протоколите без проверки за съвместимост.
Примерът с код отдолу показва как да зададете TLS 1.3 за SmtpClient инстанция на класа.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.SupportedEncryption = EncryptionProtocols.Tls13;
// some code...
}
В случай че посоченият протокол за шифроване не се поддържа в текущата версия на .NET Framework, разликата в поведението между SetSupportedEncryptionUnsafe метод и SupportedEncryption следното свойство:
- Ако SupportedEncryption когато се използва свойството, имейл клиентът понижава протокола за шифроване до поддържано ниво.
- Ако SetSupportedEncryptionUnsafe когато се използва методът, имейл клиентът хвърля изключения.
SMTP удостоверяване с CRAM-MD5 механизъм
Механизмът за удостоверяване CRAM-MD5 на Aspose.Email за .NET предоставя допълнителен слой сигурност при достъп до сървъра. Следният фрагмент от код показва как да внедрите тази функционалност в проекта си:
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.CramMD5;