Създаване и управление на имейли

Създаване на ново имейл съобщение

Този MailMessage клас представлява имейл съобщение и позволява на разработчиците да създават нови имейл съобщения. Основни свойства на имейл като From, To, Subject и body могат лесно да бъдат прикрепени към новосъздаденото съобщение. По същия начин можем да запазим имейла в различни формати като EML, MSG и MHTML.

  • Създайте инстанция на MailMessage клас.
  • Задайте свойства на имейл съобщението.
  • Запазете имейл съобщението в различни формати.

Следният фрагмент от код показва как да създадете нов имейл с различни свойства.

Задаване на множество получатели

Този MailMessage обект представлява имейл съобщение. Екземпляри на MailMessage клас се използва за конструиране на имейл съобщения, които се предават до SMTP сървър чрез SmtpClient клас. Тази статия показва как да зададете повече от един имейл адрес. Имейл адресите могат да бъдат зададени чрез MailMessage клас. Те са:

  • To – Адресите на получателите могат да бъдат зададени в полето ‘To’. Получателите в полето ‘To’ са основната аудитория на съобщението. Може да има повече от един адрес на получател.
  • Cc - CC означава „carbon copy“ (копие) или „courtesy copy“ (учтиво копие) и ви позволява да добавите получатели, които трябва да видят имейла, но не са задължени да предприемат действия. Мениджъри, например, или членове на вашия екип, които трябва да бъдат информирани за разговор. С Aspose.Email, адресите за CC могат да се задават в кода. По този начин автоматичните имейли, или всички имейли към конкретен адрес, могат да се копират на съответния персонал.
  • Bcc - Bcc, слепо копиране (blind carbon copy), ви позволява да изпратите имейл до получател, който е скрит от другите получатели. Докато CC се появява в имейл информацията, видима за основните получатели, Bcc не се показва. Той е предназначен за скрити известия. 

За да зададете множество имейл адреси в имейл съобщение, следвайте тези стъпки:

  1. Създайте инстанция на MailMessage клас.
  2. Посочете адресите From и множество To, Cc и Bcc, използвайки MailMessage екземпляр.
  3. Създайте инстанция на SmtpClient клас и изпрати имейла, използвайки метода Send.

Следният примерен код показва как могат да се зададат множество адреси в полетата To, CC и BCC.

Задаване на имена за показване на подател и получател

Програмните примери по-долу демонстрират как да се променят имейл адресите в приятелски имена в имейл съобщение. Приятелско име е име, което е по-удобно за хора, отколкото имейл адреса, например John Smith вместо js346@domain.com. При изпращане на имейл можем да свържем приятелско име с имейл адрес в MailMessage конструктор на клас.

За да промените имейл адресите в приятелски имена в имейл съобщение, следвайте тези стъпки:

  • Създайте инстанция на MailMessage клас и посочете имейл адресите в полетата To и From, заедно с приятелски имена.
  • Посочете Cc и Bcc имейл адресите заедно с приятелски имена, като извикате MailMessage конструктор на класа в MailMessage екземпляр.
  • Създайте инстанция на SmtpClient клас и изпратете имейла, използвайки Изпрати метод.

Следният кодов фрагмент показва как да се показват имена за имейл адресите.

Задаване на темата на имейл

Този MailMessage клас позволява да зададете кратко резюме на съдържанието на съобщението, използвайки тема свойство. Следният примерен код демонстрира как да създадете имейл и да зададете темата му:

from aspose.email import MailMessage

# Create a new email message
message = MailMessage()

# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"

# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."

# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")

Задаване на тяло на имейл

Освен темата на съобщението, тялото на имейла може да бъде зададено чрез същия MailMessage клас. Имейл може да има множество тела. В класа има два типа тела на имейл:

  • HTML тяло
  • Текстово тяло

В допълнение към HtmlBody и TextBody, Aspose.Email има още две свойства само за четене, свързани с тялото на имейла:

  • IsBodyText: казва на потребителя дали тялото е текст.
  • IsBodyHtml: указва на потребителя дали телото е HTML или обикновен текст.

Тази статия показва как да дефинирате чист текст или HTML тяло на съобщението, да зададете алтернативен текст и да кодирате тялото на имейла.

Задаване на HTML тяло

Html body се използва за задаване на HTML съдържанието на тялото на съобщението. Html body трябва да бъде обградено между таговете . Следният фрагмент от код показва как да зададете HTML body.

Задаване на алтернативен текст

Използвайте AlternateView клас за задаване на копия на имейл съобщение в различни формати. Например, ако изпратите съобщение в HTML, може също да предоставите версия в чист текст, в случай че някои получатели използват пощи, които не могат да показват HTML съдържание. Този клас има две свойства, linked_resources и base_uri, които се използват за разрешаване на URL адреси в съдържанието на имейла.

  • LinkedResources е колекция от обекти LinkedResources. При рендиране, URL‑тата в съдържанието на имейла първо се съпоставят с URL‑тата в Content Link на всеки обект LinkedResources в колекцията и се разрешават.
  • BaseUri се използва от четеца на имейли за разрешаване на относителни URL адреси в тялото, както и за разрешаване на относителни URL адреси за връзки в съдържанието, в колекцията LinkedResources.

Следният кодов фрагмент показва как да зададете алтернативен текст.

Функции на MailMessage

Този MailMessage class представлява съдържанието на имейл съобщение. Екземпляри на MailMessage class се използва за създаване на имейл съобщение, което се предава на SMTP сървър за доставка чрез SmtpClient class. Тази статия показва как да се използва MailMessage class utility функции за управление на следните характеристики на имейла:

  • Дата и час - Чрез MailMessage Свойството class Date ни позволява да получим или зададем датата и времето на имейла.
  • Приоритет на съобщението –  MailPriority клас задава нива на приоритет за изпращане на имейл съобщение. Приоритетът може да е нисък, нормален или висок. Приоритетът влияе върху скоростта на предаване и доставката.
  • Чувствителност на съобщението –  MailSensitivity клас задава пет нива на чувствителност.
  • Известие за доставка – Известията за доставка информират изпращача, че имейлът, който е изпратил, е доставен в пощенската кутия на получателя.

По подразбиране датата е реалната дата, на която е изпратено съобщението, а времето е времето, когато е изпратено, както се показва в Microsoft Outlook. Въпреки това, действителното време на доставка на имейла се добавя от самия SMTP сървър в заглавието на писмото. Например, по-долу е често срещано заглавие на писмо, където полето Date задава датата.

import aspose.email as ae
from aspose.email import MailMessage

# Create a new MailMessage instance
message = MailMessage()

# Add SMTP headers to the message
message.headers.add("Received", "from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("Received", "from 195.120.225.20 (HELO mail.oikoscucine.it) by aspose.com with esmtp (:1CYY+<LA*- *1WK@) id Q8,/O/-.N83@7-9M for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300")

# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")

# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())

Следният кодов фрагмент илюстрира как всяка от гореспоменатите функции може да се използва.

import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime

# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")

# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")

# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())

Искане на разписка за прочитане

Програмните образци по-долу показват как можете да поискате разписка за прочитане. Това MailMessage клас DeliveryNotificationOptions Свойството за изброяване описва опциите за известие за доставка на имейл. За да поискате разписка за прочитане след изпращане на имейл, следвайте тези стъпки:

  1. Създайте инстанция на MailMessage клас.
  2. Посочете подателя, получателя и HTML тялото за имейла в MailMessage екземпляр.
  3. Укажете DeliveryNotificationOptions в други MailMessage екземпляри.
  4. Създайте инстанция на SmtpClient клас и изпратете имейла, използвайки метода Send.

Заявките за разписка за прочитане може да не се спазват винаги, защото:

  • Имейл клиентът може да не реализира тази функция.
  • Крайният потребител може да има тази функция изключена.
  • Крайният потребител може да избере да не изпрати такава.

Следният кодов фрагмент показва как да поискате разписка за прочитане.

import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions

# Create an instance of MailMessage class
message = MailMessage()

# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS

message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")

# Create an instance of SmtpClient class
client = SmtpClient()

# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25

try:
    # Client.send will send this message
    client.send(message)
    # Display 'Message sent' only if the message is sent successfully
    print("Message sent")
except Exception as ex:
    import traceback
    traceback.print_exc()

Задаване на имейл заглавки

Заглавките на имейл представляват интернет стандарт и RFC дефинира полетата на заглавките, включени в интернет имейл съобщения. Заглавка на имейл може да се зададе чрез класа MailMessage. Често използваните типове заглавки са дефинирани в класа HeaderType. Той е запечатан клас, работещ като обикновен изброител.

Обикновено заглавка на имейл съдържа следните полета:

  • To: Адресите на получателите могат да бъдат зададени в полето To. Тези получатели са основната аудитория на съобщението. Може да има повече от един адрес на получател.
  • From: Това поле показва имейл адреса на подателя на съобщението.
  • Cc: Позволява на потребителите да изпратят съобщение като „Carbon Copy“ или „Courtesy Copy“. Т.е. получателят не се очаква да отговори или да предприеме действие. Обикновено се уведомява надзорен персонал чрез CC.
  • Bcc: Означава Blind Carbon Copy, практиката да се изпрати съобщение до множество получатели по начин, при който те не виждат цялостния списък на получателите. Предназначено е за скрити известия.
  • ReplyTo: Тази заглавка указва къде подателят желае да бъдат изпратени отговорите.
  • Subject: Заглавие, тема, предмет. Често се използва като индикатор за нишка при отговори или коментари към други съобщения.
  • Date: Тази заглавка указва дата (и час). Обикновено това е датата, на която съобщението е съставено и изпратено.
  • XMailer: Информация за клиентския софтуер на изпращача. Пример: X-Mailer: Aspose.Email. XMailer се използва от имейл клиентите. Различните клиенти имат различни стойности за XMailer. XMailer на MS Outlook е Microsoft Office Outlook, Build 11.0.5510. Той се игнорира от получателя или имейл четеца.

Обикновено заглавка на имейл изглежда приблизително така:


Reply-To: reply@reply.com

From: sender@sender.com

To: guangzhou@guangzhoo.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

За да персонализирате заглавка на имейл, следвайте тези стъпки:

  • Създайте инстанция на MailMessage клас.
  • Посочете To, From, CC, Bcc, ReplyTo, Subject, Date & XMailer, като използвате екземпляр на MailMessage.
  • Създайте инстанция на MimeHeader клас и задайте тайна заглавка.
  • Добавете тайната заглавка към MailMessage екземпляр.

Следният фрагмент от код показва как да зададете заглавки на имейл.

import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime

# Create an instance of MailMessage class
message = MailMessage()

# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")

Горният фрагмент от код създава заглавка на имейл във следния формат. Това може да се види, като отворите получилия се файл "MsgHeaders.msg" в Microsoft Outlook и разгледате Свойствата.


Reply-To: reply@reply.com

From: sender@sender.com

To: receiver1@receiver.com

CC: receiver2@receiver.com

BCC: receiver3@receiver.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

secret-header: mystery

Вмъкване на заглавка на конкретно място

Този Добавяне метод на HeadersCollection клас вмъква заглавката в края на колекцията. Въпреки това понякога може да е необходимо да се вмъкне заглавка на определено място. В такъв случай, Добавяне методът не е полезен. За да постигнете това, използвайте Insert метод на HeadersCollection. Ако колекцията съдържа заглавки със същото име, тази заглавка ще бъде вмъкната преди другите заглавки със същото име.

Следният фрагмент от код показва как да вмъкнете заглавка на конкретно място.

# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")

Добавяне на персонализирани заглавки към имейл

Примерният код по-долу демонстрира как да зададете персонализирана заглавка в имейл съобщение, използвайки MailMessage клас.

# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")

Горният фрагмент от код създава заглавна част на имейл във следния формат:

secret-header: mystery