การสร้างและจัดการอีเมล

การสร้างข้อความอีเมลใหม่

นี้ 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 body
  • ข้อความธรรมดา

นอกจากนี้ ยังมี HtmlBody และ TextBody, Aspose.Email มีคุณสมบัติเพิ่มเติมสองรายการที่อ่านอย่างเดียวเกี่ยวกับส่วนเนื้อหาเมล:

  • IsBodyText: บอกผู้ใช้ว่าส่วนเนื้อหาเป็นข้อความหรือไม่.
  • IsBodyHtml: บอกผู้ใช้ว่าตัวเนื้อหาเป็น HTML หรือข้อความธรรมดา.

บทความนี้แสดงวิธีกำหนดข้อความธรรมดาหรือ HTML body, ตั้งค่าข้อความสำรองและเข้ารหัสส่วนเนื้อหาอีเมล.

การตั้งค่า HTML Body

ส่วนเนื้อหา Html ใช้เพื่อระบุเนื้อหา HTML ของส่วนข้อความ. ส่วนเนื้อหา Html ต้องอยู่ระหว่างแท็ก . โค้ดตัวอย่างต่อไปนี้แสดงวิธีตั้งค่า HTML body.

การตั้งค่าข้อความสำรอง

ใช้ AlternateView คลาสเพื่อระบุสำเนาของข้อความอีเมลในรูปแบบต่างๆ. ตัวอย่างเช่น หากคุณส่งข้อความในรูปแบบ HTML, คุณอาจต้องการให้มีเวอร์ชันข้อความธรรมดาด้วยในกรณีที่ผู้รับบางคนใช้โปรแกรมอ่านอีเมลที่ไม่สามารถแสดงเนื้อหา HTML. คลาสนี้มีสองคุณสมบัติ, linked_resources และ base_uri, ซึ่งใช้เพื่อแก้ไข URL ภายในเนื้อหาอีเมล.

  • LinkedResources เป็นคอลเลกชันของอ็อบเจกต์ LinkedResources. เมื่อทำการแสดงผล, URL ภายในเนื้อหาอีเมลจะถูกจับคู่กับ URL ใน Content Link ของแต่ละอ็อบเจกต์ LinkedResources ในคอลเลกชันและทำการแก้ไข.
  • BaseUri ถูกใช้โดยโปรแกรมอ่านเมลเพื่อแก้ไข URL เชิงสัมพันธ์ภายในเนื้อหา รวมถึงแก้ไข URL ของ Content Link เชิงสัมพันธ์ในคอลเลกชัน LinkedResources.

โค้ดสแน็ปต่อไปนี้แสดงวิธีตั้งค่าข้อความสำรอง.

คุณสมบัติของ MailMessage

นี้ MailMessage class แทนเนื้อหาของข้อความอีเมล ตัวอย่างของ MailMessage class ถูกใช้เพื่อสร้างข้อความอีเมลที่ส่งไปยังเซิร์ฟเวอร์ SMTP เพื่อการจัดส่งโดยใช้ SmtpClient class. บทความนี้แสดงวิธีการใช้ MailMessage คุณสมบัติ class utility สำหรับควบคุมคุณสมบัติอีเมลต่อไปนี้:

  • Date and time - ผ่าน 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 อธิบายตัวเลือกการแจ้งเตือนการจัดส่งสำหรับอีเมล เพื่อขอใบรับรองการอ่านหลังจากส่งอีเมล ให้ทำตามขั้นตอนต่อไปนี้:

  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. เป็นคลาสที่ sealed ทำงานเหมือน enum ปกติ.

โดยปกติส่วนหัวของอีเมลจะประกอบด้วยฟิลด์เหล่านี้:

  • 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

แทรกส่วนหัวในตำแหน่งที่ต้องการ

นี้ Add เมธอดของ HeadersCollection คลาสนี้แทรกส่วนหัวที่ส่วนท้ายของคอลเลกชัน. อย่างไรก็ตาม บางครั้งอาจจำเป็นต้องแทรกส่วนหัวในตำแหน่งเฉพาะ. ในกรณีเช่นนั้น, Add เมธอดนี้จะไม่เป็นประโยชน์. เพื่อทำให้สำเร็จ, ใช้ 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