Надсилання листів та пересилання повідомлень через SMTP

The SmtpClient клас у Aspose.Email for Python via .NET забезпечує надійний та гнучкий інтерфейс для надсилання електронних листів за допомогою протоколу Simple Mail Transfer Protocol (SMTP). Це основна точка входу для розробників, які хочуть доставляти електронні повідомлення у своїх застосунках.

Ключові особливості SmtpClient включення класу:

  • SMTP доставка електронної пошти: Дозволяє надсилати листи безпосередньо через SMTP-сервер.

  • Альтернативні варіанти доставки: Підтримує додаткові методи доставки, такі як збереження повідомлень у файлову систему або запис у чергу повідомлень.

  • Синхронні та асинхронні операції:

    • Синхронний режим: Використовуйте методи Send, щоб заблокувати поточний потік, доки електронна пошта не буде повністю передана.

    • Асинхронний режим: Використовуйте методи SendAsync для надсилання повідомлень у фоні, дозволяючи застосунку залишатися реактивним.

  • Підтримка TNEF: Дозволяє надсилати повідомлення у форматі Transport Neutral Encapsulation Format (TNEF) для сумісності з функціями Microsoft Outlook.

У цій статті розглядаються всі основні функціональності, доступні через SmtpClient клас, демонструючи, як надсилати стандартні та розширені листи з повним контролем над конфігурацією та доставкою.

Синхронне надсилання листів

The SmtpClient.send метод дозволяє синхронно надсилати електронне повідомлення. Такий підхід корисний, коли застосунок потребує підтвердження доставки перед подальшою роботою.

Щоб синхронно надіслати простий текстовий лист за допомогою Aspose.Email для Python через .NET, скористайтеся нижченаведеними кроками та прикладом коду:

  1. Створіть MailMessage екземпляр і встановіть відправника, одержувач(ів), тему та тіло листа.
  2. Налаштуйте SmtpClient з хостом сервера, портом, ім’ям користувача та паролем.
  3. Викличте send метод на SmtpClient екземпляр і передайте у MailMessage об’єкт.
# Create email
eml = ae.MailMessage()
eml.subject = "Message with Plain Text Body"
eml.body = "This is text body."
eml.from_address = "from@gmail.com"
eml.to.append(ae.MailAddress("to@gmail.com", "Recipient 1")) 

# Configure SmtpClient object
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO 

# Send email
client.send(eml)

Надіслати заздалегідь створений файл EML через SMTP

Якщо вам потрібно надіслати електронне повідомлення, яке вже створено та збережено у форматі EML, ви можете завантажити та надіслати його програмно за допомогою Aspose.Email for Python via .NET.

Наступний фрагмент коду зі кроками демонструє, як надіслати файл EML за допомогою SmtpClient:

  1. Завантажте файл EML за допомогою MailMessage.load метод.
  2. Створіть та налаштуйте екземпляр SmtpClient, вказуючи хост SMTP-сервера, ім’я користувача та пароль для аутентифікації.
  3. Викличте send метод на SmtpClient екземпляр і передайте завантажене повідомлення.
import aspose.email as ae

message = ae.MailMessage.load("test.eml")

# Send this message using SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)

Надіслати простий текстовий лист

Ви можете надіслати простий текстовий лист за допомогою Aspose.Email, вказавши тіло повідомлення як простий текст. MailMessage.body властивість використовується для визначення вмісту, тоді як SmtpClient клас обробляє процес надсилання.

Наступний фрагмент коду зі кроками демонструє, як надіслати простий текстовий лист:

  1. Створіть екземпляр MailMessage клас.
  2. Встановіть електронні адреси відправника та отримувача.
  3. Призначте простий текстовий вміст властивості body.
  4. Створіть екземпляр SmtpClient клас з деталями сервера та обліковими даними.
  5. Надішліть електронний лист, використовуючи send метод.

Надіслати HTML лист

Aspose.Email for Python via .NET дозволяє надсилати листи з HTML‑форматованим тілом, використовуючи MailMessage клас. Присвоюючи HTML‑вміст до html_body властивість і налаштування is_body_html на True, ви можете створювати багаті, стилизовані повідомлення.

Наступний приклад коду зі кроками демонструє, як надіслати HTML‑листа:

  1. Створіть екземпляр MailMessage клас.
  2. Встановіть електронні адреси відправника та отримувача.
  3. Встановити is_body_html = True щоб вказати HTML‑форматування.
  4. Призначте ваш HTML‑вміст до html_body властивість.
  5. Створіть і налаштуйте SmtpClient екземпляр.
  6. Використайте send метод для передачі повідомлення.

Примітка: Хоча цей приклад використовує базовий HTML, ви можете додати більш складні HTML‑структури для створення адаптивних і брендованих макетів листів.

Надіслати HTML лист з альтернативою у вигляді простого тексту

При надсиланні HTML‑листь, найкращою практикою є включення простого текстового варіанту для отримувачів, чия поштові клієнти не підтримують HTML. Aspose.Email for Python via .NET пропонує AlternateView клас, щоб включати і HTML, і простий текст в один лист, підвищуючи сумісність та зручність для користувачів.

Наступний приклад коду та кроки демонструють, як надіслати лист з альтернативним текстовим вмістом:

  1. Створіть екземпляр MailMessage клас.
  2. Встановіть електронні адреси відправника та отримувача.
  3. Призначте HTML‑вміст до html_body властивість і встановіть is_body_html = True.
  4. Створіть простий текстовий AlternateView за допомогою create_alternate_view_from_string.
  5. Додайте альтернативний вигляд до alternate_views колекція MailMessage.
  6. Створіть і налаштуйте SmtpClient екземпляр.
  7. Надішліть електронний лист, використовуючи send метод.

Як надсилати масові листи

Надсилання масових листів передбачає одночасне надсилання кількох повідомлень — кожне, можливо, адресоване різному одержувачу. Aspose.Email забезпечує цю можливість за допомогою SmtpClient клас.

Нижче наведений приклад коду демонструє, як надіслати пакет листів за один раз:

  1. Створіть екземпляр SmtpClient клас і налаштуйте його host, port, облікові дані та параметри безпеки.
  2. Створіть кілька MailMessage екземпляри — кожен представляє окреме електронне повідомлення.
  3. Вкажіть відправника, одержувача, тему та тіло повідомлення для кожного листа.
  4. Додайте всі MailMessage об’єкти до MailMessageCollection.
  5. Викличте send метод SmtpClient клас, передаючи MailMessageCollection як аргумент.
import aspose.email as ae
from aspose.email.clients import SmtpClient, SecurityOptions
from aspose.email import MailMessage, MailMessageCollection

# Create individual email messages
message1 = MailMessage("from@gmail.com", "to1@gmail.com", "Bulk Email - Message 1", "Hello, this is message 1.")
message2 = MailMessage("from@gmail.com", "to2@gmail.com", "Bulk Email - Message 2", "Hello, this is message 2.")
message3 = MailMessage("from@gmail.com", "to3@gmail.com", "Bulk Email - Message 3", "Hello, this is message 3.")

# Add messages to a collection
many_messages = MailMessageCollection()
many_messages.append(message1)
many_messages.append(message2)
many_messages.append(message3)

# Configure SMTP client
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO

# Send all messages in bulk
client.send(many_messages)

Надсилати листи з підтримкою мультиз’єднань

Aspose.Email for Python via .NET дозволяє використовувати кілька одночасних з’єднань під час надсилання листів через SmtpClient клас. Ця функція може допомогти оптимізувати продуктивність при надсиланні великої кількості листів, розподіляючи навантаження між кількома з’єднаннями. Однак пам’ятайте, що увімкнення режиму мультиз’єднань не гарантує підвищення продуктивності у всіх випадках — це залежить від конфігурації сервера та мережевих умов.

Ключові властивості:

  • use_multi_connection: Увімкнути або вимкнути режим мультиз’єднань для SMTP‑клієнта.

  • connections_quantity: Визначає кількість з’єднань, які відкриватимуться при увімкненому режимі мультиз’єднань.

Наступний приклад коду показує, як увімкнути режим мультиз’єднань:

  1. Створіть та налаштуйте екземпляр SmtpClient.
  2. Вкажіть параметри сервера, такі як host, port, ім’я користувача, пароль та шифрування.
  3. Увімкніть режим мультиз’єднань, встановивши use_multi_connection.
  4. Вкажіть кількість з’єднань за допомогою connections_quantity.
import aspose.email as ae

client = ae.clients.smtp.SmtpClient
client.host = "<HOST>"
client.username = "<USERNAME>"
client.password = "<PASSWORD>"
client.port = 587
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.send(messages)

Надіслати листи у форматі TNEF

Transport Neutral Encapsulation Format (TNEF) — це пропрієтарний формат електронної пошти, що використовується Microsoft Outlook та Exchange для збереження багатого форматування, вбудованих об’єктів і спеціальних функцій, таких як кнопки голосування. Стандартні поштові клієнти можуть не зберігати це форматування під час використання типових повідомлень на основі MIME.

Aspose.Email for Python via .NET підтримує надсилання листів у форматі TNEF, щоб забезпечити збереження всіх розширених форматувань та функцій. Це досягається шляхом увімкнення use_tnef властивість SmtpClient клас.

Наступний приклад коду та кроки демонструють, як надіслати лист у форматі TNEF:

  1. Завантажте існуюче EML‑повідомлення або створіть нове за допомогою MailMessage клас.
  2. Встановіть адреси відправника та отримувача.
  3. Увімкніть форматування TNEF, встановивши use_tnef = True на SmtpClient екземпляр.
  4. Надішліть повідомлення, використовуючи send() метод.

Надіслати запити на зустрічі електронною поштою

Microsoft Outlook та інші поштові клієнти з підтримкою календаря, такі як IBM Lotus Notes, дозволяють користувачам керувати зустрічами безпосередньо зі своєї поштової скриньки. Коли користувач отримує запрошення на зустріч, він може прийняти або відхилити його безпосередньо у своєму поштовому клієнті. За допомогою Aspose.Email for Python via .NET розробники можуть програмно створювати та надсилати такі запрошення у відповідності зі стандартом iCalendar (RFC 2445).

Як надсилати запрошення на зустрічі електронною поштою

Aspose.Email забезпечує вбудовану підтримку створення та надсилання запитів на зустріч iCalendar у складі листа. Ці запити сумісні з популярними календарними клієнтами і дозволяють одержувачам легко відповідати на запрошення.

|Запит на зустріч iCalendar, надісланий електронною поштою| | :- | |todo:image_alt_text|

Наступний фрагмент коду показує, як надсилати запити електронною поштою:

  1. Створіть MailMessage екземпляр.
  2. Вкажіть електронні адреси відправника та отримувача.
  3. Створіть Appointment об’єкт з місцем, часом початку/закінчення, відправником та одержувачами.
  4. Встановіть резюме та опис зустрічі.
  5. Прикріпіть зустріч до листа, використовуючи add_alternate_view().
  6. Надішліть електронний лист, використовуючи SmtpClient.

Підтримка iCalendar для IBM Lotus Notes

Aspose.Email використовує формат iCalendar (RFC 2445), що забезпечує сумісність ваших запитів на зустрічі з Microsoft Outlook, IBM Lotus Notes та іншими клієнтами, які підтримують цей стандарт. Той самий процес можна застосовувати незалежно від платформи отримувача.

Переадресовувати листи за допомогою SMTP‑клієнта

Переадресація листів — поширене завдання у цифровій комунікації, часто використовується для поширення отриманих повідомлень. Aspose.Email for Python via .NET дозволяє розробникам програмно переадресовувати листи, використовуючи SmtpClient клас. Метод forward дозволяє переадресовувати збережені або отримані листи новим одержувачам без участі оригінального відправника.

Нижче наведений приклад коду демонструє, як переадресувати лист, використовуючи MailMessage клас:

Переадресовувати EML‑файли без завантаження у MailMessage

Aspose.Email також підтримує пряме переадресування .eml‑файлів без попереднього завантаження їх у MailMessage об’єкт. Це особливо корисно у випадках, коли потрібно мінімізувати використання пам’яті системи.

Нижче наведений приклад коду демонструє, як безпосередньо переадресувати файл EML:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient(host, smtp_port, username, password, ae.clients.SecurityOptions.AUTO)
file = open("test.eml", "rb")
client.forward(sender, recipients, file)