Изпращане на имейли и препращане на съобщения чрез 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 за 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. Създайте Plain Text AlternateView, използвайки create_alternate_view_from_string.
  5. Добавете алтернативния изглед към alternate_views колекция от MailMessage.
  6. Създайте и конфигурирайте SmtpClient екземпляр.
  7. Изпратете имейла, като използвате send метод.

Как да изпратите масови имейли

Изпращането на големи количества имейли включва изпращане на множество съобщения наведнъж — всяко потенциално адресирано към различен получател. Aspose.Email предоставя тази възможност, използвайки SmtpClient клас.

Примерният код по-долу демонстрира как да изпратите партида имейли наведнъж:

  1. Създайте инстанция на SmtpClient клас и конфигурирайте неговия хост, порт, идентификационни данни и настройки за сигурност.
  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. Задайте данните за сървъра като хост, порт, потребителско име, парола и криптиране.
  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)