EmailClient

EmailClient class

Представляет клиент, который создает подключение к серверу, используя учетные данные хоста.

public abstract class EmailClient : IDisposable

Характеристики

ИмяОписание
virtual AccessToken { get; set; }Получает или задает токен доступа.
virtual ClientCertificates { get; }Содержит коллекцию сертификатов клиентов
virtual ConnectionAsgmtMode { get; set; }Получает или задает значение, определяющее режим распределения соединений в нескольких потоках environment Существуют следующие типы соединений: - Основное соединение создается и удаляется вместе с почтовым клиентом. Его нельзя создать или удалить вручную. - Соединение по умолчанию является соединением по умолчанию для некоторого потока. Если соединение по умолчанию существует и ConnectionAsgmtMode разрешает, все методы почтового клиента, выполняемые в этом потоке, будут неявно использовать это соединение. В каждом потоке может существовать только одно соединение по умолчанию. Он может быть создан вручную или автоматически. Это зависит от свойства EmailClient.ConnectionAsgmtMode. Эти соединения можно создать вручную с помощью метода EmailClient.CreateConnection(createAsDefaultConnection = true). Если соединение по умолчанию не используется (зависит от режима распределения соединений), вместо него неявно используется основное соединение. не связаны с потоками. Они могут быть созданы вручную и должны использоваться явно как параметр метода. Эти соединения можно создать вручную с помощью метода EmailClient.CreateConnection() или метода EmailClient.CreateConnection(createAsDefaultConnection = false). Существуют следующие типы распределения соединений: - ConnectionAsgmtType.UseMainOrDefault Этот режим используется по умолчанию в почтовых клиентах. Почтовый клиент использует основное соединение для всех операций из нескольких потоков, если соединение по умолчанию не было создано или соединение не было явно передано как параметр метода. Основное соединение — это соединение, которое создается одновременно с почтовым клиентом. Пользователь может создавать соединения по умолчанию для потоков с помощью метода CreateConnection. Если создано соединение по умолчанию для потока, оно неявно используется для всех методов почтового клиента, которые вызываются в этом потоке. Если соединение по умолчанию для потока не создано, основное соединение используется для всех методов почтового клиента, которые вызываются в этом потоке. thread. Пользователь также может создавать соединения, не связанные с потоками (не соединения по умолчанию), с помощью метода CreateConnection. Если пользователь хочет использовать другие подключения (не основные и не по умолчанию), он должен явно передать это подключение как параметр метода, который он хочет использовать. Пользователь может дополнительно создать любое количество подключений. Соединение по умолчанию может быть только одно на поток. Обратите внимание, что соединения по умолчанию работают правильно, если пользователь использует объекты Thread для многозадачного программирования. Если пользователь использует ConnectionPool или объекты Task для многозадачного программирования, этот режим может привести к неправильному поведению программы. Чтобы избежать этой проблемы, пользователь должен вручную удалить соединение по умолчанию (если он его использует) в конце кода, который the thread. - ConnectionAsgmtType.UseMain Почтовый клиент использует основное соединение для всех операций из нескольких потоков. Основное соединение — это соединение, которое создается одновременно с почтовым клиентом. Пользователь не может создавать соединения по умолчанию. Пользователь может создавать соединения, не связанные с потоками (не соединения по умолчанию), с помощью метода CreateConnection. Если пользователь хочет использовать другие подключения (не основные и не по умолчанию), он должен явно передать это подключение как параметр метода, который он хочет использовать. Пользователь может дополнительно создать любое количество подключений. - ConnectionAsgmtType.UseDefault Почтовый клиент неявно использует только соединения по умолчанию для всех операций из нескольких потоков. В этом режиме основное соединение не используется. Если для какого-либо потока не было создано соединение по умолчанию (первый вызов метода почтового клиента), почтовый клиент неявно создает соединение по умолчанию для потока перед выполнением первой операции. Пользователь не может создавать подключения по умолчанию для потоков с помощью метода CreateConnection, поскольку они создаются автоматически. Когда создается соединение по умолчанию для потока, оно неявно используется для всех методов почтового клиента, которые вызываются в этом потоке. Читайте. Пользователь также может создавать соединения, не связанные с потоками (не соединения по умолчанию), с помощью метода CreateConnection. Если пользователь хочет использовать другие подключения (не основные и не по умолчанию), он должен явно передать это подключение как параметр метода, который он хочет использовать. Пользователь может дополнительно создать любое количество подключений. Соединение по умолчанию может быть только одно на поток. Обратите внимание, что соединения по умолчанию работают правильно, если пользователь использует объекты Thread для многозадачного программирования. Если пользователь использует ConnectionPool или объекты Task для многозадачного программирования, этот режим может привести к неправильному поведению программы. Чтобы избежать этой проблемы, пользователь должен вручную удалить соединение по умолчанию в конце кода, который выполняется в потоке.
virtual ConnectionCheckupPeriod { get; set; }Период проверки соединения в миллисекундах. Значение по умолчанию: 5 мин.
virtual ConnectionsQuantity { get; set; }Получает или устанавливает количество подключений в режиме множественных подключений
ConnectionState { get; }Получает текущее состояние соединения.
virtual CurrentConnection { get; }Получает текущее соединение в соответствии с ConnectionAsgmtMode option
virtual DefaultPort { get; }Получает порт по умолчанию для client
EnableLogger { get; set; }Получает или устанавливает значение, которое позволяет включить/выключить logger
GreetingTimeout { get; set; }Получает или задает время ожидания приветствия, которое используется при установлении соединения. Обратите внимание, что время ожидания приветствия не может быть бесконечным. Почтовые клиенты могут выполнять достаточно длительные операции. Для ограничения времени операций пользователи должны использоватьTimeoutимущество. Значения этого свойства должны иметь длинные интервалы, чтобы не препятствовать длительным операциям. Но в некоторых случаях, если EmailClient будет использовать только свойство Timeout, установление соединения может занять много времени. Например, почтовый клиент может использовать автоматический режим установления соединения. В этом режиме почтовый клиент перебирает все возможные параметры подключения, пока соединение не будет установлено. Серверы SMTP, IMAP и POP3 в случае корректного установления соединения отправляют клиенту строку приветствия. Серверы могут использовать неявную или явную (START TLS) инициацию соединения SSL/TLS. Если режим подключения не соответствует (например, сервер ожидает неявного SSL-соединения, но клиент пытается установить незащищенное или явное SSL-соединение), сервер не будет отправлять строку приветствия. В этом случае пользователь будет долго ждать, пока таймаут достигнет строки приветствия, и клиент перейдет к следующему варианту подключения. Чтобы избежать этой проблемы, было введено свойство GreetingTimeout. Это свойство позволяет установить тайм-аут для строки приветствия и уменьшить время автоматического установления соединения.
virtual Host { get; set; }Получает или задает имя хоста.
LogFileName { get; set; }Получает или задает имя файла журнала
virtual Password { get; set; }Получает или устанавливает пароль. Ограничения пароля определяются реализацией сервера, к которому подключается клиент.
virtual Port { get; set; }Получает или задает порт.
virtual Proxy { get; set; }Получает или устанавливает прокси для client
virtual SecurityOptions { get; set; }Режим безопасности для почтового клиента
virtual SupportedEncryption { get; set; }Определяет используемые версии протоколов шифрования SSL/TLS. ОБРАТИТЕ ВАШЕ ВНИМАНИЕ, вы можете установить только те версии протокола, которые поддерживаются .net framework. ЕСЛИ НЕКОТОРЫЕ ВЕРСИИ ПРОТОКОЛА НЕ ПОДДЕРЖИВАЮТСЯ ВАШЕЙ ТЕКУЩЕЙ ВЕРСИЕЙ .NET FRAMEWORK, ОНИ БУДУТ ИГНОРИРОВАТЬСЯ И ПРОПУСКАТЬ. ЭТО МОЖЕТ ПРИВЕСТИ К ПОНИЖЕНИЮ УРОВНЯ БЕЗОПАСНОСТИ TLS. В ЭТОМ СЛУЧАЕ ИСКЛЮЧЕНИЕ НЕ БУДЕТ СОЗДАНО!!! См.EncryptionProtocols документацию для более подробной информации. Пожалуйста, используйтеSetSupportedEncryptionUnsafe метод, если вы хотите установить протоколы шифрования без каких-либо проверок совместимости. Значение по умолчанию: Tls | Тлс11 | Тлс12 | Tls13 (в случае, если ваша текущая версия .net framework поддерживает эти версии TLS)
Timeout { get; set; }Получает или задает время ожидания для почтовых операций
TokenProvider { get; set; }Получает или задает TokenProvider, позволяющий получить токен доступа.
virtual UseAuthentication { get; set; }Указывает, используется ли аутентификация.
UseDateInLogFileName { get; set; }Получает или задает значение, указывающее, следует ли использовать дату в имени файла журнала.
virtual UseDefaultCredentials { get; set; }Получает или задает логическое значение, которое определяет, отправляются ли DefaultCredentials с запросами. Этот параметр используется ТОЛЬКО с проверкой подлинности NTLM!
virtual UseMultiConnection { get; set; }Получает или задает значение, указывающее, должен ли клиент использовать несколько подключений для тяжелых операций. Обратите внимание, использование этого режима не обязательно должно привести к повышению производительности.
virtual UsePipelining { get; set; }Получает или задает объект, указывающий, включен ли конвейерный режим.
virtual Username { get; set; }Получает или задает имя пользователя.

Методы

ИмяОписание
virtual CreateConnection()Создает новое независимое соединение для операций, не связанных с потоками (не соединение по умолчанию). Вызов этого метода аналогичен вызову CreateConnection(createAsDefaultConnection = false) Подробнее см. в документации по свойству EmailClient.ConnectionAsgmtMode.
virtual CreateConnection(bool)Создает новое (по умолчанию или независимое) соединение для операций. Дополнительные сведения см. в документации по свойству EmailClient.ConnectionAsgmtMode.
virtual Dispose()Завершает все операции с сервером.
virtual GetCapabilities()
abstract Noop()Команда “Нет операции”
abstract Noop(IConnection)Команда “Нет операции”
ResetLogSettings()Сбрасывает настройки ведения журнала по умолчанию.
SetSupportedEncryptionUnsafe(EncryptionProtocols)Определяет используемые версии протоколов шифрования SSL/TLS. Этот метод небезопасен и устанавливает протоколы шифрования без каких-либо проверок совместимости. ИспользованиеSupportedEncryption свойство для безопасной установки только тех протоколов, которые определенно поддерживаются .net framework. Обратите внимание, если ваш текущий .net framework не поддерживает этот уровень безопасности, будет выдано исключение при попытке установить соединение с сервером.
abstract ValidateCredentials()Проверяет правильность учетных данных

Смотрите также