Smtpclient - клас ()

Для створення і надсилання листів за допомогою SmtpClient необхідно вказати наступну інформацію:

Сервер-хост SMTP, використовуваний для відправки електронної пошти. Див. Властивості Host і Port.

Облікові дані для перевірки автентичності, якщо цього вимагає сервер SMTP. Див. Опис властивості Credentials.

Вміст повідомлення. Див. Опис методів Send і SendAsync. приймають параметр body. Також см. Опис властивості MailMessage. Body.

Щоб включити вкладення в повідомлення електронної пошти, спочатку слід створити вкладення за допомогою класу Attachment. а потім додати його в повідомлення за допомогою властивості MailMessage. Attachments. Залежно від використовуваного одержувачами клієнта електронної пошти і файлового типу вкладення, можливо, деякі одержувачі не зможуть прочитати вкладення. Для клієнтів, які не відображають вкладення в початковій формі, можна вказати альтернативні уявлення за допомогою властивості MailMessage. AlternateViews.

За допомогою файлів конфігурації програми або комп'ютера можна вказати значення хоста, порту і облікових даних, які використовуються за замовчуванням для всіх об'єктів SmtpClient. Додаткові відомості див. У розділі Елемент (Параметри мережі).

Щоб відправити повідомлення електронної пошти і заблокувати роботу під час очікування передачі повідомлення на сервер SMTP, можна скористатися одним з синхронних методів Send. Щоб дозволити головному потоку програми продовжувати виконання під час передачі пошти, скористайтеся одним з асинхронних методів SendAsync. Подія SendCompleted виникає після закінчення операції SendAsync. Для отримання цієї події необхідно додати делегат SendCompletedEventHandler в SendCompleted. Делегат SendCompletedEventHandler повинен звертатися до методу зворотного виклику, обробляє повідомлення про події SendCompleted. Щоб скасувати асинхронну передачу електронної пошти, скористайтеся методом SendAsyncCancel.

Якщо знову викликати SendAsync або Send при виконуваної передачі електронної пошти, виникне виключення InvalidOperationException.

Підключення до сервера SMTP, встановлене поточним екземпляром класу SmtpClient. може використовуватися повторно, коли програму буде потрібно відправити кілька повідомлень того ж сервера SMTP. Це особливо корисно, коли використовувана перевірка справжності або шифрування встановлюють підключення до SMTP-сервера. Процес перевірки автентичності та створення сеансу TLS може бути дорогою операцією. Вимога повторної установки підключення для кожного повідомлення при відправці великої кількості електронної пошти одного сервера SMTP може значно позначитися на продуктивності. Є безліч потужних поштових додатків, які відправляють електронною поштою поновлення стану, розсилки новин або оповіщення. Також багато програм - поштові клієнти підтримують автономний режим, в якому користувачі можуть формувати повідомлення електронної пошти, надіслані пізніше, після установки з'єднання з сервером SMTP. Типовою поведінкою поштового клієнта є відправка всіх повідомлень SMTP певного SMTP-серверу (наданим постачальником послуг Інтернету) з подальшим перенаправленням цієї електронної пошти інших серверів SMTP.

Реалізація класу SmtpClient здійснює пулінг підключень SMTP, щоб уникнути витрат на повторну установку підключення для кожного повідомлення, що направляється того ж сервера. Додаток може повторно використовувати той же об'єкт SmtpClient для відправки безлічі різних повідомлень електронної пошти одного сервера SMTP і багатьом різних серверів SMTP. В результаті немає можливості визначити, коли додаток припиняє використання об'єкта SmtpClient і його слід очистити.

Коли сеанс SMTP закінчується і клієнтові потрібно завершити підключення, він повинен відіслати сервера повідомлення QUIT, щоб вказати, що у нього більше немає повідомлень для відправки. Це дозволяє серверу звільнити ресурси, пов'язані з підключенням від клієнта, і обробити повідомлення, відправлені клієнтом.

У класу SmtpClient немає методу Finalize. тому програма повинна викликати перевантажений метод Dispose для явного вивільнення ресурсів. Метод Dispose перебирає всі встановлені з'єднання з сервером SMTP, зазначеним у властивості Host. і посилає повідомлення QUIT, за яким слід документоване завершення TCP-з'єднання. Метод Dispose також звільняє некеровані ресурси, використовувані Socket. і (необов'язково) звільняє керовані ресурси.

Метод Dispose викликається після закінчення роботи з класом SmtpClient. Метод Dispose залишає об'єкт SmtpClient в непридатному для роботи стані. Після виклику методу Dispose видаліть всі посилання на SmtpClient. щоб збирач сміття міг відновити пам'ять, займану методом SmtpClient.

Схожі статті