Отправка писем и пересылка сообщений через SMTP
Этот 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 класс, демонстрирующий, как отправлять стандартные и расширенные сообщения электронной почты с полным контролем настройки и доставки.
Отправка писем синхронно
Этот SmtpClient.send метод позволяет отправлять сообщение электронной почты синхронно. Такой подход полезен, когда приложению необходимо подтвердить доставку перед продолжением.
Чтобы отправить простое текстовое письмо синхронно, используя Aspose.Email for Python via .NET, выполните следующие шаги и используйте пример кода ниже:
- Создайте MailMessage экземпляр и задайте отправителя, получателя(ей), тему и тело сообщения.
- Настройте SmtpClient с указанием хоста сервера, порта, имени пользователя и пароля.
- Вызвать
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:
- Загрузите файл EML с помощью MailMessage.load метод.
- Создайте и настройте экземпляр SmtpClient, указывая хост SMTP‑сервера, имя пользователя и пароль для аутентификации.
- Вызвать
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 класс обрабатывает процесс отправки.
Следующий фрагмент кода с шагами демонстрирует, как отправить письмо в виде обычного текста:
- Создать экземпляр MailMessage класс.
- Установите адреса отправителя и получателя.
- Назначьте обычный текст свойству body.
- Создать экземпляр SmtpClient класс с деталями сервера и учётными данными.
- Отправить письмо, используя
sendметод.
Отправить письмо в формате HTML
Aspose.Email for Python via .NET позволяет отправлять письма с телом, отформатированным в HTML, используя MailMessage класс. При назначении HTML‑контента свойству html_body свойство и настройка is_body_html установив значение True, вы можете создавать насыщенные, стилизованные сообщения.
Следующий образец кода с шагами демонстрирует, как отправить письмо в формате HTML:
- Создать экземпляр MailMessage класс.
- Установите адреса отправителя и получателя.
- Установить
is_body_html = Trueчтобы указать форматирование HTML. - Назначьте ваш HTML‑контент свойству
html_bodyсвойство. - Создайте и настройте SmtpClient экземпляр.
- Используйте
sendметод для передачи сообщения.
Примечание: Несмотря на то, что в этом примере используется базовый HTML, вы можете включать более сложные HTML‑структуры для создания адаптивных и фирменных макетов писем.
Отправить письмо HTML с альтернативой в виде обычного текста
При отправке писем в формате HTML рекомендуется включать версию в обычном тексте для получателей, чьи почтовые клиенты не поддерживают HTML. Aspose.Email for Python via .NET предоставляет AlternateView класс, позволяющий включать как HTML, так и обычный текст в одно сообщение, улучшая совместимость и пользовательский опыт.
Следующий образец кода и шаги демонстрируют, как отправить письмо с альтернативным текстовым содержимым:
- Создать экземпляр MailMessage класс.
- Установите адреса отправителя и получателя.
- Назначьте HTML‑контент свойству
html_bodyсвойство и установитеis_body_html = True. - Создайте альтернативный вид plain text, используя create_alternate_view_from_string.
- Добавьте альтернативный представление к
alternate_viewsколлекцию MailMessage. - Создайте и настройте SmtpClient экземпляр.
- Отправить письмо, используя
sendметод.
Как отправлять массовые письма
Отправка массовых писем подразумевает рассылку сразу нескольких сообщений — каждое может быть адресовано разному получателю. Aspose.Email предоставляет эту возможность с помощью SmtpClient класс.
Ниже приведён образец кода, демонстрирующий, как отправить пакет писем за один раз:
- Создать экземпляр SmtpClient класс и настройте его хост, порт, учётные данные и параметры безопасности.
- Создайте несколько MailMessage экземпляры — каждый представляет отдельное письмо.
- Укажите отправителя, получателя, тему и тело сообщения для каждого письма.
- Добавьте все MailMessage объекты в MailMessageCollection.
- Вызвать
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: Указывает количество соединений, которые открываются при включённом режиме многократных соединений.
Следующий образец кода показывает, как включить режим многократных соединений:
- Создайте и настройте экземпляр SmtpClient.
- Установите параметры сервера, такие как хост, порт, имя пользователя, пароль и шифрование.
- Включите режим многократных соединений, установив
use_multi_connection. - Укажите количество соединений с
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:
- Загрузите существующее сообщение EML или создайте новое с помощью MailMessage класс.
- Установите адреса отправителя и получателя.
- Включите форматирование TNEF, установив
use_tnef = Trueна SmtpClient экземпляр. - Отправьте сообщение, используя
send()метод.
Отправлять запросы на встречи по электронной почте
Microsoft Outlook и другие клиенты электронной почты с поддержкой календаря, такие как IBM Lotus Notes, позволяют пользователям управлять встречами прямо из входящих. Когда пользователь получает приглашение на встречу, он может принять или отклонить его непосредственно в клиенте. С помощью Aspose.Email for Python via .NET разработчики могут программно создавать и отправлять такие приглашения в соответствии со стандартом iCalendar (RFC 2445).
Как отправлять приглашения на встречи по электронной почте
Aspose.Email предоставляет встроенную поддержку создания и отправки запросов на встречу iCalendar в составе письма. Эти запросы совместимы с популярными клиентами календарей и позволяют получателям легко отвечать на приглашения.
|Запрос встречи iCalendar, отправленный по электронной почте| | :- | |
|
Следующий фрагмент кода показывает, как отправлять запросы по электронной почте:
- Создайте MailMessage экземпляр.
- Укажите адреса электронной почты отправителя и получателя.
- Создайте Appointment объект с местом, временем начала/окончания, отправителем и получателями.
- Установите сводку встречи и описание.
- Прикрепите встречу к письму, используя
add_alternate_view(). - Отправить письмо, используя 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)