Створення та керування листами
Створення нового листа
The MailMessage клас представляє повідомлення електронної пошти та дозволяє розробникам створювати нові листи. Основні властивості листа, такі як From, To, Subject і body, можна легко приєднати до щойно створеного листа. Аналогічно, ми можемо зберігати лист у різних форматах, таких як EML, MSG і MHTML.
- Створіть екземпляр MailMessage клас.
- Встановіть властивості листа.
- Збережіть лист у різних форматах.
Наступний фрагмент коду показує, як створити новий лист з різними властивостями.
Вказування декількох отримувачів
The MailMessage об’єкт представляє лист. Екземпляри MailMessage клас використовується для створення листів, які передаються до SMTP‑серверу за допомогою SmtpClient клас. У цій статті продемонстровано, як вказати більше однієї електронної адреси. Адреси можна задавати за допомогою MailMessage клас. Вони:
- To — Адреси отримувачів можна вказати у полі ‘To’. Одержувачі в полі ‘To’ є основною аудиторією повідомлення. Може бути більше однієї адреси отримувача.
- Cc – CC означає «копія», або «ввічлива копія», і дозволяє додати отримувачів листа, які повинні його бачити, але не обов’язково повинні діяти за ним. Наприклад, менеджери чи члени вашої команди, яким потрібно бути в курсі розмови. За допомогою Aspose.Email можна вказати адреси CC у вашому коді. Таким чином, автоматичні листи або всі листи на певну адресу можуть копіюватися відповідальним особам.
- Bcc – Bcc (прихована копія) дозволяє надсилати лист отримувачу, який прихований від інших отримувачів. Там, де CC з’являється в інформації листа, яку бачать головні отримувачі, Bcc не відображається. Це призначено для прихованого сповіщення.
Щоб вказати декілька електронних адрес у листі, виконайте такі кроки:
- Створіть екземпляр MailMessage клас.
- Вкажіть адресу From та кілька адрес To, Cc і Bcc за допомогою
MailMessageекземпляр. - Створіть екземпляр SmtpClient клас і надішліть лист, використовуючи метод Send.
Нижче наведений зразок коду показує, як можна вказати декілька адрес To, CC та BCC.
Встановлення імен відображення відправника та отримувача
Нижче наведені програмні приклади демонструють, як змінити електронні адреси на дружні імена у листі. Дружнє ім’я – це назва, більш зрозуміла людям, ніж електронна адреса, наприклад John Smith замість js346@domain.com. При надсиланні листа ми можемо асоціювати дружнє ім’я з електронною адресою у MailMessage конструктор класу.
Щоб змінити електронні адреси на дружні імена у листі, виконайте такі кроки:
- Створіть екземпляр MailMessage клас і задайте електронні адреси у полях To і From разом із дружніми іменами.
- Вкажіть електронні адреси Cc і Bcc разом із дружніми іменами, викликавши MailMessage конструктор класу в
MailMessageекземпляр. - Створіть екземпляр SmtpClient клас і надішліть лист, використовуючи Надіслати метод.
Нижче наведений фрагмент коду показує, як відображати імена для електронних адрес.
Встановлення теми листа
The 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 у колекції LinkedResources та розв’язуються.
- BaseUri використовується читачем листа для розв’язання відносних URL-адрес у тілі, а також для розв’язання відносних URL‑посилань на контент у колекції LinkedResources.
Нижче наведений фрагмент коду показує, як задати альтернативний текст.
Функції MailMessage
The MailMessage class представляє вміст електронного листа. Екземпляри the MailMessage class використовується для створення електронного листа, який передається SMTP‑серверу для доставки за допомогою the SmtpClient class. У цій статті показано, як використовувати MailMessage class містить утилітні функції для керування наступними можливостями електронної пошти:
- Date and time - Через the 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())
Запит підтвердження прочитання
Нижче наведені програмні приклади, які показують, як можна запросити підтвердження прочитання. The MailMessage клас DeliveryNotificationOptions Властивість Enumeration описує параметри повідомлення про доставку електронного листа. Щоб запросити підтвердження прочитання після відправлення листа, виконайте такі кроки:
- Створіть екземпляр MailMessage клас.
- Вкажіть відправника, отримувача та HTML‑тіло листа у MailMessage екземпляр.
- Вкажіть DeliveryNotificationOptions в інших MailMessage екземпляри.
- Створіть екземпляр 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" (пристор). Тобто, від отримувача не очікується відповіді або дії. Зазвичай, це використовується для інформування керівного персоналу.
- 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
Вставити заголовок у конкретному місці
The Додати метод 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