Отправка и пересылка сообщений

Класс SmtpClient позволяет приложениям отправлять электронную почту с использованием простого протокола передачи почты (SMTP).

  • Класс SmtpClient — единственный основной класс записей, используемый разработчиками для отправки почтовых сообщений.
  • Класс SmtpClient также предоставляет другие распространенные способы доставки электронной почты, включая запись сообщений электронной почты в файловую систему, очередь сообщений и т. д.
  • Класс SmtpClient полностью поддерживает эти две модели программирования:
    • Synchronous
  • Класс SmtpClient также поддерживает отправку сообщений в формате TNEF.

Чтобы отправить сообщение электронной почты и заблокировать его в ожидании передачи на SMTP-сервер, используйте один из синхронных методов отправки. Чтобы основной поток программы продолжал выполняться во время передачи электронной почты, используйте один из асинхронных методов SendAsync.

Синхронная отправка электронных писем

Сообщение электронной почты можно отправить синхронно с помощью метода Send класса SmtpClient. Он отправляет указанное сообщение электронной почты через SMTP-сервер для доставки. Отправитель, получатели, тема и тело сообщения указываются с помощью объектов String. Чтобы отправить сообщение электронной почты синхронно, выполните следующие действия:

  1. Создайте экземпляр класса MailMessage и задайте его свойства.
  2. Создайте экземпляр класса SmtpClient и укажите хост, порт, имя пользователя и пароль.
  3. Отправьте сообщение с помощью метода Send класса SmtpClient и передайте экземпляр MailMessage.

В следующем фрагменте кода показано, как отправлять электронные письма синхронно.

Отправка сохраненных сообщений с диска

Если вам нужно программно отправить предварительно составленное сообщение электронной почты, сохраненное в формате EML, используйте MailMessage класс для загрузки существующего файла и сохранения его перед отправкой. Затем отправьте его с помощью SmtpClient класс, определяющий имя хоста, имя пользователя и пароль SMTP-сервера для аутентификации. Метод «отправить» 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)

Отправка электронного письма в виде обычного текста

В приведенных ниже примерах программирования показано, как отправить текстовое сообщение по электронной почте. Свойство 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. Или, если вы отправляете информационный бюллетень, вы можете захотеть предоставить копию текста в виде обычного текста тем получателям, которые решили получить текстовую версию. Чтобы отправить электронное письмо с альтернативным текстом, выполните следующие действия:

  1. Создайте экземпляр класса MailMessage.
  2. Укажите адреса электронной почты отправителя и получателя в экземпляре MailMessage.
  3. Создайте экземпляр класса AlternateView.

Это создает альтернативное представление сообщения электронной почты с использованием содержимого, указанного в строке.

  1. Добавьте экземпляр класса AlternateView к объекту MailMessage.
  2. Создайте экземпляр класса SmtpClient и отправьте электронное письмо с помощью метода Send.

В следующем фрагменте кода показано, как отправить электронное письмо с альтернативным текстом.

Отправка массовых писем

Массовая отправка электронных писем означает отправку пакета писем одним сообщением. Мы можем отправить пакет писем, используя метод BulkSend класса SmtpClient:

  1. Создайте экземпляр класса SmtpClient.
  2. Укажите свойства класса SmtpClient.
  3. Создайте экземпляр класса MailMessage.
  4. Укажите отправителя, получателя, тему письма и сообщение в экземпляре класса MailMessage.
  5. Повторите два вышеуказанных шага еще раз, если вы хотите отправить электронное письмо другому человеку.
  6. Создайте экземпляр класса MailMessageCollection.
  7. Добавьте экземпляр класса MailMessage в объект класса MailMessageCollection.
  8. Теперь отправьте электронное письмо с помощью метода BulkSend класса SMTPClient, передав в него экземпляр класса MailMessageCollection.

В следующем фрагменте кода показано, как отправлять массовые электронные письма.

Отправка электронных писем с помощью мультиподключения

Следующие свойства SmtpClient класс позволяет клиенту использовать несколько подключений к серверу для отправки электронной почты. Это может быть полезно в сценариях, когда клиенту необходимо отправить большое количество электронных писем и он хочет распределить рабочую нагрузку между несколькими соединениями.

  • Свойство use_multi_connection получает или задает значение, указывающее, нужно ли клиенту использовать несколько подключений для высоконагруженных операций.
  • Свойство ‘connections_quantity’ определяет или задает количество подключений в режиме нескольких подключений.
Please note, the use of this mode will not necessarily lead to performance increasing.

В следующем примере кода показано, как реализовать эту функцию в проекте:

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 и передайте ему значения.
  • Укажите краткое описание и описание в экземпляре календаря.
  • Добавьте календарь в экземпляр MailMessage и передайте ему экземпляр «Встреча».

|Запрос на собрание iCalendar отправлен по электронной почте| |: - | |todo:image_alt_text| В следующем фрагменте кода показано, как отправлять запросы по электронной почте.

iCalendar поддерживает IBM Lotus Notes

Функция календаря Aspose.Email.Mail основана на стандарте iCalendar, стандарте обмена календарными данными (справочник по синтаксису RFC 2445 или RFC2445). Поэтому он поддерживает не только Microsoft Outlook, но и IBM Lotus Notes. Чтобы отправить приглашение на собрание в Lotus Notes, выполните те же действия, что и выше.

Пересылка электронной почты с помощью SMTP-клиента

Пересылка электронной почты с помощью SMTP-клиента

Пересылка электронной почты — обычная практика в повседневной цифровой коммуникации. Полученное электронное письмо можно переслать определенным получателям, не передавая его первоначальным отправителям. SmtpClient API Aspose.Email предоставляет возможность пересылать электронные письма определенным получателям. Этот метод 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)