Отправка и пересылка сообщений
Класс SmtpClient позволяет приложениям отправлять электронные письма, используя Протокол простой передачи почты (SMTP).
- Класс SmtpClient является единственной основной точкой входа, которую разработчики используют для отправки почтовых сообщений.
- Класс SmtpClient также предоставляет другие распространенные методы доставки электронной почты, включая запись электронных сообщений в файловую систему, очередь сообщений и т.д.
- Класс SmtpClient полностью поддерживает две модели программирования:
- Синхронная
- Класс SmtpClient также поддерживает отправку сообщений в формате TNEF
Чтобы отправить электронное сообщение и заблокировать выполнение программы до завершения передачи электронной почты на SMTP-сервер, используйте один из синхронных методов Send. Чтобы позволить основному потоку вашей программы продолжить выполнение во время передачи электронной почты, используйте один из асинхронных методов SendAsync.
Синхронная отправка электронной почты
Электронное сообщение можно отправить синхронно, используя метод Send класса SmtpClient. Он отправляет указанное электронное сообщение через SMTP-сервер для доставки. Отправитель сообщения, получатели, тема и текст сообщения указываются с помощью объектов String. Для отправки электронного сообщения синхронно выполните следующие шаги:
- Создайте экземпляр класса MailMessage и установите его свойства.
- Создайте экземпляр класса SmtpClient и укажите хост, порт, имя пользователя и пароль.
- Отправьте сообщение, используя метод Send класса SmtpClient и передав экземпляр MailMessage.
Следующий фрагмент кода показывает, как отправить электронные письма синхронно.
Отправка сохраненных сообщений с диска
Если вам необходимо программно отправить заранее составленное электронное сообщение, хранящееся в формате EML, используйте класс MailMessage для загрузки существующего файла и его сохранения перед отправкой. Затем отправьте его с помощью класса SmtpClient, указав имя хоста SMTP-сервера, имя пользователя и пароль для аутентификации. Метод ‘send’ класса SmtpClient используется для отправки электронного сообщения. Весь процесс показан в приведенном ниже примере кода.
import aspose.email as ae
message = ae.MailMessage.load("test.eml")
# Отправить это сообщение, используя SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)
Отправка простого текстового электронного письма
Примеры кода ниже показывают, как отправить текстовое электронное сообщение. Свойство Body, которое является свойством класса MailMessage, используется для указания содержимого текстового тела сообщения. Чтобы отправить текстовое электронное сообщение, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите адреса электронной почты отправителя и получателя в экземпляре MailMessage.
- Укажите содержимое TextBody, используемое для текстового сообщения.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо.
Следующий фрагмент кода показывает, как отправить текстовое электронное письмо.
Отправка электронного письма с HTML-телом
Примеры кода ниже показывают, как можно отправить простое HTML-электронное сообщение. Свойство HtmlBody, которое является свойством класса MailMessage, используется для указания HTML-содержимого тела сообщения. Чтобы отправить простое HTML-электронное письмо, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите адреса электронной почты отправителя и получателя в экземпляре MailMessage.
- Укажите содержимое HtmlBody.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
С точки зрения данной статьи HTML-содержимое электронной почты является примитивным:
Это HTML-тело Большинство HTML-электронных писем будет более сложным. Следующий фрагмент кода показывает, как отправить электронное письмо с HTML-телом.Отправка электронного письма с альтернативным текстом сообщения
Примеры кода ниже показывают, как отправить простое HTML-электронное сообщение с альтернативным содержимым. Используйте класс AlternateView для указания копий электронного сообщения в различных форматах. Например, если вы отправляете сообщение в HTML, вы также можете предоставить текстовую версию для получателей, которые используют почтовые клиенты, не поддерживающие отображение HTML-содержимого. Или, если вы отправляете рассылку, вы можете предоставить текстовую копию текста для тех получателей, которые выбрали получение текстовой версии. Чтобы отправить электронное письмо с альтернативным текстом, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите адреса электронной почты отправителя и получателя в экземпляре MailMessage.
- Создайте экземпляр класса AlternateView.
Это создает альтернативный вид для электронного сообщения с использованием содержимого, указанного в строке.
- Добавьте экземпляр класса AlternateView в объект MailMessage.
- Создайте экземпляр класса SmtpClient и отправьте электронное письмо, используя метод Send.
Следующий фрагмент кода показывает, как отправить электронное письмо с альтернативным текстом.
Отправка массовых электронных писем
Массовая отправка электронных писем означает отправку партии электронных писем за одно сообщение. Мы можем отправить партию электронных писем, используя метод BulkSend класса SmtpClient:
- Создайте экземпляр класса SmtpClient.
- Укажите свойства класса SmtpClient.
- Создайте экземпляр класса MailMessage.
- Укажите отправителя, получателя, тему письма и сообщение в экземпляре класса MailMessage.
- Повторите последние два шага, если вы хотите отправить электронное письмо другому человеку.
- Создайте экземпляр класса MailMessageCollection.
- Добавьте экземпляр класса MailMessage в объект класса MailMessageCollection.
- Теперь отправьте вашу электронную почту, используя метод BulkSend класса SmtpClient, передав экземпляр класса MailMessageCollection.
Следующий фрагмент кода показывает, как отправить массовые электронные письма.
Отправка электронных писем с MultiConnection
Следующие свойства класса 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
Электронные письма в формате TNEF имеют специальное форматирование, которое может быть потеряно, если отправить с помощью стандартного API. Aspose.Email предоставляет возможность отправки электронных писем в формате TNEF, таким образом сохраняя формат. Свойство UseTnef класса SmtpClient может быть установлено для отправки электронного письма в формате TNEF. Следующий фрагмент кода показывает, как отправить сообщение в формате TNEF.
Отправка запросов на встречи
Microsoft Outlook предлагает функции календаря, а также управление электронной почтой. Когда пользователь открывает электронное письмо с приглашением на событие, Outlook предлагает ему принять или отклонить приглашение. Aspose.Email позволяет разработчикам добавлять функции календаря в их электронные письма.
Отправка запросов по электронной почте
Чтобы отправить запросы на встречи по электронной почте, выполните следующие шаги:
- Создайте экземпляр класса MailMessage.
- Укажите адреса отправителя и получателя, используя экземпляр класса MailMessage.
- Инициализируйте экземпляр класса Appointment и передайте ему значения.
- Укажите сводку и описание в экземпляре Calendar.
- Добавьте Calendar в экземпляр MailMessage и передайте ему экземпляр Appointment.
Запрос на встречу iCalendar, отправленный по электронной почте |
---|
Следующий фрагмент кода показывает, как отправить запросы по электронной почте. |
Поддержка iCalendar для IBM Lotus Notes
Функция календаря Aspose.Email.Mail основана на стандарте iCalendar, стандарте для обмена данными календаря (RFC 2445 или RFC2445 Syntax Reference). Поэтому он поддерживает не только Microsoft Outlook, но и IBM Lotus Notes. Чтобы отправить запрос на встречу в Lotus Notes, выполните те же шаги, что и указано выше.
Пересылка электронной почты с использованием SMTP-клиента
Пересылка электронной почты с помощью SMTP-клиента
Пересылка электронной почты является общей практикой в повседневной цифровой коммуникации. Полученное электронное письмо можно переслать конкретным получателям, не делясь с оригинальными отправителями. API Aspose.Email SmtpClient предоставляет возможность пересылки электронного письма конкретным получателям. Метод Forward может использоваться для пересылки полученного или сохраненного электронного письма желаемым получателям, как показано в этой статье. Следующий фрагмент кода показывает, как переслать электронное письмо с использованием SMTP-клиента.
Пересылка электронной почты без использования MailMessage
API также поддерживает пересылку сообщений EML без предварительной загрузки в MailMessage. Это полезно в случаях, когда ресурсы системы ограничены с точки зрения оперативной памяти.
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)