Tworzenie i zarządzanie e‑mailami
Tworzenie nowej wiadomości e‑mail
Ten MailMessage klasa reprezentuje wiadomość e‑mail i pozwala programistom tworzyć nowe wiadomości e‑mail. Podstawowe właściwości, takie jak From, To, Subject i body, można łatwo ustawić w nowo utworzonej wiadomości. Analogicznie możemy zapisać wiadomość w różnych formatach, takich jak EML, MSG i MHTML.
- Utwórz instancję MailMessage klasa.
- Ustaw właściwości wiadomości e‑mail.
- Zapisz wiadomość e‑mail w różnych formatach.
Poniższy fragment kodu pokazuje, jak utworzyć nowy e‑mail z różnymi właściwościami.
Określanie wielu odbiorców
Ten MailMessage obiekt reprezentuje wiadomość e‑mail. Instancje MailMessage klasa jest używana do konstruowania wiadomości e‑mail, które są przekazywane do serwera SMTP przy użyciu SmtpClient klasa. Ten artykuł pokazuje, jak określić więcej niż jeden adres e‑mail. Adresy e‑mail można określić przy użyciu MailMessage klasa. Są to:
- To – adresy odbiorców można podać w polu ‘To’. Odbiorcy w polu ‘To’ są główną publicznością wiadomości. Może być podany więcej niż jeden adres odbiorcy.
- Cc – CC oznacza „carbon copy” (kopia węglowa) lub „courtesy copy” (kopia grzecznościowa) i pozwala dodać odbiorców, którzy muszą zobaczyć wiadomość, ale nie muszą na nią reagować. Na przykład menedżerowie lub członkowie zespołu, którzy powinni być świadomi rozmowy. W Aspose.Email adresy CC można określić w kodzie. Dzięki temu automatyczne e‑maile lub wszystkie e‑maile do konkretnego adresu mogą być kopiowane do odpowiednich osób.
- Bcc – Bcc, blind carbon copy, pozwala wysłać e‑mail do odbiorcy ukrytego przed innymi odbiorcami. Gdy CC jest widoczne w informacjach e‑mail, które widzą główni odbiorcy, Bcc nie jest. Służy do ukrytego powiadamiania.
Aby określić wiele adresów e‑mail w wiadomości, wykonaj następujące kroki:
- Utwórz instancję MailMessage klasa.
- Określ adresy From oraz wiele adresów To, Cc i Bcc używając
MailMessageinstancję. - Utwórz instancję SmtpClient klasa i wyślij e‑mail używając metody Send.
Poniższy przykład kodu pokazuje, jak można określić wiele adresów To, CC i BCC.
Ustawianie wyświetlanych nazw nadawcy i odbiorcy
Poniższe przykłady programistyczne pokazują, jak zamienić adresy e‑mail na przyjazne nazwy w wiadomości e‑mail. Przyjazna nazwa to nazwa bardziej przyjazna człowiekowi niż adres e‑mail, np. John Smith zamiast js346@domain.com. Podczas wysyłania e‑mail możemy powiązać przyjazną nazwę z adresem e‑mail w MailMessage konstruktor klasy.
Aby zamienić adresy e‑mail na przyjazne nazwy w wiadomości, wykonaj następujące kroki:
- Utwórz instancję MailMessage klasa i określ adresy e‑mail w polach To i From wraz z przyjaznymi nazwami.
- Określ adresy e‑mail Cc i Bcc wraz z przyjaznymi nazwami, wywołując MailMessage konstruktor klasy w
MailMessageinstancję. - Utwórz instancję SmtpClient klasa i wyślij e‑mail przy użyciu Wyślij metoda.
Poniższy fragment kodu pokazuje, jak wyświetlać nazwy dla adresów e‑mail.
Ustawianie tematu e‑maila
Ten MailMessage klasa umożliwia określenie zwięzłego podsumowania treści wiadomości przy użyciu temat właściwość. Poniższy przykład kodu demonstruje, jak utworzyć e‑mail i ustawić jego temat:
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}")
Ustawianie treści e‑maila
Oprócz tematu wiadomości, treść e‑maila może być określona przy użyciu tego samego MailMessage klasa. E‑mail może mieć wiele treści. W klasie istnieją dwa typy treści e‑maila:
- Treść HTML
- Treść tekstowa
Oprócz HtmlBody i TextBody, Aspose.Email posiada jeszcze dwie właściwości tylko do odczytu związane z treścią e‑maila:
IsBodyText: informuje użytkownika, czy treść jest tekstowa.IsBodyHtml: informuje użytkownika, czy ciało jest w formacie HTML czy zwykły tekst.
Ten artykuł pokazuje, jak zdefiniować tekst zwykły lub HTML jako treść, ustawić tekst alternatywny i zakodować treść e‑maila.
Ustawianie ciała HTML
Html body jest używany do określenia treści HTML w ciele wiadomości. Html body musi być zamknięty w tagach . Poniższy fragment kodu pokazuje, jak ustawić HTML body.
Ustawianie tekstu alternatywnego
Użyj AlternateView klasa służy do określania kopii wiadomości e‑mail w różnych formatach. Na przykład, jeśli wysyłasz wiadomość w HTML, możesz także dostarczyć wersję tekstową, na wypadek gdy niektórzy odbiorcy używają klientów e‑mail, które nie wyświetlają treści HTML. Ta klasa ma dwie właściwości, linked_resources i base_uri, które są używane do rozwiązywania adresów URL w treści e‑maila.
- LinkedResources to kolekcja obiektów LinkedResources. Podczas renderowania, URL‑e w treści e‑maila są najpierw dopasowywane do URL‑ów w Content Link każdego obiektu LinkedResources w kolekcji LinkedResources i rozwiązywane.
- BaseUri jest używany przez czytnik poczty do rozwiązywania względnych adresów URL w treści oraz do rozwiązywania względnych URL‑ów linków treści w kolekcji LinkedResources.
Poniższy fragment kodu pokazuje, jak ustawić tekst alternatywny.
Funkcje MailMessage
Ten MailMessage klasa reprezentuje treść wiadomości e‑mail. Instancje MailMessage klasa jest używana do budowy wiadomości e‑mail, która jest przesyłana do serwera SMTP w celu dostarczenia przy użyciu SmtpClient klasa. Ten artykuł pokazuje, jak używać MailMessage klasa zawiera funkcje narzędziowe do kontrolowania następujących funkcji e‑mail:
- Data i godzina – poprzez MailMessage Właściwość klasy Date umożliwia odczyt lub ustawienie daty i godziny wiadomości e‑mail.
- Priorytet wiadomości – MailPriority klasa określająca poziomy priorytetu przy wysyłaniu wiadomości e‑mail. Może być niski, normalny lub wysoki. Priorytet wpływa na szybkość transmisji i dostarczenie.
- Wrażliwość wiadomości – MailSensitivity klasa określająca pięć poziomów wrażliwości.
- Powiadomienie o dostarczeniu – Powiadomienia o dostarczeniu informują nadawcę, że wysłany e‑mail dotarł do skrzynki odbiorczej odbiorcy.
Domyślnie data jest rzeczywistą datą, kiedy wiadomość została wysłana, a godzina – czasem jej wysłania, tak jak wyświetla to Microsoft Outlook. Jednak rzeczywisty czas dostarczenia e‑maila jest dodawany przez sam serwer SMTP w nagłówku wiadomości. Na przykład poniżej znajduje się typowy nagłówek poczty, w którym pole Date ustawia datę.
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())
Poniższy fragment kodu ilustruje, jak można używać każdej z wymienionych wyżej funkcji.
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())
Żądanie potwierdzenia odczytu
Poniższe przykłady kodu pokazują, jak możesz żądać potwierdzenia odczytu. MailMessage klasa DeliveryNotificationOptions Właściwość wyliczeniowa opisuje opcje powiadomień o dostarczeniu wiadomości e‑mail. Aby żądać potwierdzenia odczytu po wysłaniu wiadomości, wykonaj następujące kroki:
- Utwórz instancję MailMessage klasa.
- Określ nadawcę, odbiorcę i treść HTML dla e‑maila w MailMessage instancję.
- Określ DeliveryNotificationOptions w innych MailMessage instancje.
- Utwórz instancję SmtpClient klasa i wyślij e‑mail używając metody Send.
Żądania potwierdzeń odbioru nie zawsze mogą być spełnione, ponieważ:
- Klient poczty może nie implementować tej funkcji.
- Użytkownik końcowy może mieć tę funkcję wyłączoną.
- Użytkownik końcowy może zdecydować się nie wysyłać go.
Poniższy fragment kodu pokazuje, jak zażądać potwierdzenia odbioru.
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()
Ustawianie nagłówków e‑mail
Nagłówki e‑mail stanowią standard internetowy, a RFC definiuje pola nagłówków, które są zawarte w wiadomościach e‑mail w Internecie. Nagłówek e‑mail może być określony przy użyciu klasy MailMessage. Powszechne typy nagłówków są zdefiniowane w klasie HeaderType. Jest to klasa zamknięta działająca jak zwykła enumeracja.
Zwykle nagłówek e‑mail zawiera następujące pola:
- To: Adresy odbiorców można podać w polu To. Są to główni odbiorcy wiadomości. Może być podany więcej niż jeden adres odbiorcy.
- From: To pole przedstawia adres e‑mail nadawcy wiadomości.
- Cc: Pozwala użytkownikom wysłać wiadomość jako "Carbon Copy" lub "Courtesy Copy". Odbiorca nie jest spodziewany do odpowiedzi lub działania. Zwykle osoby nadzorujące są powiadamiane za pomocą CC.
- Bcc: Oznacza Blind Carbon Copy, odnosi się do praktyki wysyłania wiadomości do wielu odbiorców w taki sposób, że otrzymują oni niepełną listę odbiorców. Służy do ukrytego powiadamiania.
- ReplyTo: To pole nagłówka wskazuje, gdzie nadawca chce otrzymywać odpowiedzi.
- Subject: Tytuł, nagłówek, temat. Często używany jako wskaźnik wątku dla wiadomości odpowiadających lub komentujących inne wiadomości.
- Date: Ten nagłówek określa datę (i czas). Zwykle jest to data, w której wiadomość została napisana i wysłana.
- XMailer: Informacje o oprogramowaniu klienta nadawcy. Przykład: X-Mailer: Aspose.Email. XMailer jest używany przez klientów poczty. Różni klienci poczty mają różne wartości XMailer. Wartość XMailer w MS Outlook to Microsoft Office Outlook, Build 11.0.5510. Jest ignorowana przez odbiorcę e‑mail lub czytnik poczty.
Zwykle nagłówek e-mail wygląda mniej więcej tak:
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
Aby dostosować nagłówek e-mail, wykonaj następujące kroki:
- Utwórz instancję MailMessage klasa.
- Określ To, From, CC, Bcc, ReplyTo, Subject, Date i XMailer używając instancji MailMessage.
- Utwórz instancję MimeHeader klasę i określ tajny nagłówek.
- Dodaj tajny nagłówek do MailMessage instancję.
Poniższy fragment kodu pokazuje, jak ustawić nagłówki e‑mail.
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")
Powyższy fragment kodu generuje nagłówek e‑mail w następującym formacie. Można to zobaczyć, otwierając powstały plik "MsgHeaders.msg" w Microsoft Outlook i przeglądając Właściwości.
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
Wstawianie nagłówka w określonym miejscu
Ten Add metoda HeadersCollection klasa wstawia nagłówek na końcu kolekcji. Czasami jednak może być konieczne wstawienie nagłówka w określonym miejscu. W takim wypadku, Add metoda nie będzie pomocna. Aby to osiągnąć, użyj Insert metoda HeadersCollection. Jeśli kolekcja zawiera nagłówki o tej samej nazwie, ten nagłówek zostanie wstawiony przed innymi nagłówkami o tej samej nazwie.
Poniższy fragment kodu pokazuje, jak wstawić nagłówek w określonym miejscu.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
Dodawanie własnych nagłówków do e‑mail
Poniższy przykład programistyczny demonstruje, jak określić własny nagłówek w wiadomości e‑mail przy użyciu MailMessage klasa.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
Powyższy fragment kodu generuje nagłówek e‑mail w następującym formacie:
secret-header: mystery