การสร้างและตั้งค่าเนื้อหาอีเมล

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

Aspose.Email สำหรับ Java ช่วยให้ผู้พัฒนาสามารถสร้างข้อความ MIME (Multipurpose Internet Mail Extensions) ตั้งแต่ต้น คลาสหลักสำหรับวัตถุประสงค์นี้ใน API ของ Aspose.Email สำหรับ Java คือ MailMessage คลาส หัวข้อนี้อธิบายขั้นตอนที่จำเป็นในการสร้างข้อความอีเมลในรูปแบบไฟล์ EML, MSG และ MTH โดยใช้ Aspose.Email สำหรับ Java.

เพื่อสร้างข้อความอีเมลตั้งแต่ต้น:

  1. สร้างอินสแตนซ์ของคลาส MailMessage.
  2. ตั้งค่าหัวเรื่องของข้อความโดยใช้ setSubject() เมธอด.
  3. ตั้งค่าพื้นข้อความของข้อความโดยใช้ setHtmlBody() เมธอด.
  4. ตั้งค่าผู้ส่งอีเมลโดยใช้ setFrom() เมธอด.
  5. ตั้งค่าผู้รับในช่อง TO ด้วยการใช้ getTo().add() เมธอด.
  6. ตั้งค่าผู้รับในช่อง CC ด้วยการใช้ getCC().add() เมธอด.
  7. เรียกใช้ Save() วิธีการบันทึกไฟล์ข้อความลงดิสก์ในรูปแบบ MSG, EML, และ MHT.  

การระบุผู้รับหลายคน

นี้ MailMessage เป็นตัวแทนของข้อความอีเมล อินสแตนซ์ของคลาส MailMessage ใช้สร้างข้อความอีเมลที่ถูกส่งไปยังเซิร์ฟเวอร์ SMTP โดยใช้ SmtpClient คลาส หัวข้อนี้แสดงวิธีระบุที่อยู่อีเมลมากกว่าหนึ่งรายการ สามารถระบุที่อยู่อีเมลโดยใช้คลาส MailMessage ที่อยู่อีเมลที่ใช้ในคลาส 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 และส่งอีเมลโดยใช้เมธอด Send.

โค้ดสแน็ปต่อไปนี้แสดงวิธีแสดงชื่อสำหรับที่อยู่อีเมล.

ตั้งค่า Mail Body

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

นอกจากนี้ ยังมี HtmlBody, Aspose.Email มีเมธอดอื่นที่เกี่ยวข้องกับเนื้อหาเมล:

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

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

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

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

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

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

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

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

การระบุการเข้ารหัสเนื้อหาเมล

Content Type กำหนดรูปแบบเนื้อหาอีเมล: ชุดอักขระ ตัวอย่างเช่น ชุดอักขระที่พบบ่อยบางชุดที่มีใน java.nio.Charset คือ:

  • US-ASCII - ASCII 7 บิต, หรือที่เรียกว่า ISO646-US, หรือบล็อก Latin พื้นฐานของชุดอักขระ Unicode
  • ISO-8859-1 - ตัวอักษรละติน ISO หมายเลข 1, หรือที่รู้จักในชื่อ ISO-LATIN-1
  • UTF-8 - รูปแบบการแปลง UCS 8 บิต
  • UTF-16BE - รูปแบบการแปลง UCS 16 บิต, ลำดับไบต์แบบ big-endian
  • UTF-16LE - รูปแบบการแปลง UCS 16 บิต, ลำดับไบต์แบบ little-endian
  • UTF-16 - รูปแบบการแปลง UCS 16 บิต, ลำดับไบต์ระบุโดยเครื่องหมายลำดับไบต์ (Byte Order Mark) ที่เป็นตัวเลือก

Aspose.Email ใช้ BodyEncoding คุณสมบัติของคลาส MailMessage เพื่อระบุการเข้ารหัสเนื้อหาอีเมล เพื่อเข้ารหัสเนื้อหาของข้อความอีเมล ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างอินสแตนซ์ของคลาส MailMessage.
  2. ระบุผู้ส่ง ผู้รับ และเนื้อหา HTML ของอีเมลในอินสแตนซ์ MailMessage.
  3. ระบุค่าคุณสมบัติ BodyEncoding.
  4. สร้างอินสแตนซ์ของ SmtpClient คลาสและส่งอีเมลโดยใช้เมธอด Send.

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

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

  • วันที่และเวลา - ผ่านคลาส MailMessage setDate เมธอดที่เราตั้งค่าวันที่และเวลาของอีเมล.
  • ความสำคัญของข้อความ - MailPriority คลาสระบุระดับความสำคัญสำหรับการส่งข้อความอีเมล สามารถเป็นระดับต่ำ ปกติ หรือสูง ความสำคัญมีผลต่อความเร็วในการส่งและการจัดส่ง.
  • ความละเอียดของข้อความ - MailSensitivity คลาสระบุระดับความละเอียดอ่อนไหวห้าระดับ.
  • การแจ้งเตือนการจัดส่ง - การแจ้งเตือนการจัดส่งทำให้ผู้ส่งทราบว่าอีเมลที่ส่งไปแล้วได้ถูกส่งถึงกล่องข้อความของผู้รับแล้ว.

โดยค่าเริ่มต้น วันที่จะเป็นวันที่จริงที่ข้อความถูกส่งและเวลาเป็นเวลาที่ส่ง แสดงโดย Microsoft Outlook อย่างไรก็ตาม เวลาจัดส่งอีเมลที่แท้จริงจะถูกเพิ่มโดยเซิร์ฟเวอร์ SMTP ในส่วนหัวเมล ตัวอย่างต่อไปนี้เป็นส่วนหัวเมลทั่วไปที่ฟิลด์ Date ถูกตั้งค่าด้วย MailMessage.setDate.

โค้ดสแน็ปด้านล่างแสดงวิธีใช้แต่ละฟีเจอร์ที่อธิบายข้างต้น.

การขอการรับทราบการอ่าน

ตัวอย่างโปรแกรมด้านล่างแสดงวิธีการขอการรับทราบการอ่าน. คลาส MailMessage DeliveryNotificationOptions คุณสมบัติ Enumeration อธิบาย ตัวเลือกการแจ้งการจัดส่ง สำหรับอีเมล เพื่อขอการรับทราบการอ่านหลังจากส่งอีเมล ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างอินสแตนซ์ของคลาส MailMessage.
  2. ระบุผู้ส่ง ผู้รับ และเนื้อหา HTML ของอีเมลในอินสแตนซ์ MailMessage.
  3. ระบุ DeliveryNotificationOptions ในอินสแตนซ์ MailMessage อื่น ๆ.
  4. สร้างอินสแตนซ์ของคลาส SmtpClient และส่งอีเมลโดยใช้เมธอด Send.

คำขอใบรับรู้อ่านอาจไม่ได้รับการยอมรับเสมอ เพราะ:

  • ไคลเอนต์เมลอาจไม่ได้ทำงานฟังก์ชันนั้น.
  • ผู้ใช้ปลายทางอาจปิดการทำงานฟังก์ชันนั้น.
  • ผู้ใช้ปลายทางอาจเลือกที่จะไม่ส่งใบรับรู้.

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

ตั้งค่าส่วนหัวอีเมล

ส่วนหัวของอีเมลเป็นมาตรฐานอินเทอร์เน็ตและ RFC กำหนดฟิลด์ส่วนหัวที่รวมอยู่ในข้อความอีเมลบนอินเทอร์เน็ต สามารถระบุส่วนหัวอีเมลได้โดยใช้ MailMessage คลาส ชนิดส่วนหัวทั่วไปถูกกำหนดใน HeaderType คลาส เป็นคลาสที่ sealed และทำงานคล้าย enumeration ปกติ

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

  • To: สามารถระบุที่อยู่ผู้รับในฟิลด์ 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

ในโค้ดที่ให้ด้านล่าง เราได้ปรับแต่งส่วนหัวของอีเมล

โค้ดส่วนที่กล่าวมาข้างต้นจะสร้างส่วนหัวอีเมลในรูปแบบต่อไปนี้ สามารถสังเกตได้โดยเปิดไฟล์ 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 และตัวอย่างโค้ดการใช้งาน


 Method Signature

HeaderCollection.insert(String name, String value)

การเพิ่มส่วนหัวที่กำหนดเองในอีเมล

ตัวอย่างโปรแกรมด้านล่างแสดงวิธีระบุส่วนหัวที่กำหนดเองในข้อความอีเมล สามารถระบุส่วนหัวอีเมลโดยใช้คลาส MailMessage เพื่อตั้งค่าส่วนหัวที่กำหนดเองในข้อความอีเมล โปรดทำตามขั้นตอนต่อไปนี้:

  1. สร้างอินสแตนซ์ของคลาส MailMessage.
  2. ระบุค่าของ to, from และ subject โดยใช้อินสแตนซ์ของ MailMessage
  3. เพิ่มส่วนหัวลับเข้าไปในอินสแตนซ์ของ MailMessage
  4. สร้างอินสแตนซ์ของคลาส SmtpClient และส่งอีเมลโดยใช้เมธอด Send.

โค้ดส่วนต่อไปนี้แสดงวิธีเพิ่มส่วนหัวที่กำหนดเองในอีเมล

ลงลายเซ็นอีเมลด้วย DKIM

Aspose.Email รองรับการลงลายเซ็นอีเมลด้วย DKIM (DomainKeys Identified Mail) ซึ่งทำให้องค์กรรับผิดชอบต่อข้อความที่กำลังถูกส่งผ่าน (เกี่ยวกับ DKIM). DKIM เพิ่มลายเซ็นดิจิทัลให้กับส่วนหัวของข้อความอีเมลซึ่งผู้รับสามารถตรวจสอบได้ คีย์สาธารณะของผู้ส่งทำให้ผู้รับสามารถตรวจสอบว่าลายเซ็นตรงกับเนื้อหาข้อความ คลาส MailMessage dKIMSign เมธอดนี้ใช้ตั้งค่าข้อมูลการเข้ารหัสและลายเซ็นสำหรับการลงนามข้อความ โค้ดส่วนต่อไปนี้แสดงวิธีลงนามอีเมลด้วย DKIM

การทำ Mail Merge

Mail merge ช่วยให้คุณสร้างและส่งอีเมลหลายฉบับที่คล้ายกัน เนื้อหาหลักของอีเมลจะเหมือนกัน แต่เนื้อหาสามารถปรับให้เป็นส่วนบุคคลได้ โดยทั่วไปรายละเอียดติดต่อของผู้รับ (ชื่อ, นามสกุล, บริษัท ฯลฯ) จะใช้เพื่อปรับเนื้อหาอีเมล

|todo:image_alt_text| | :- | |รูปภาพ: ตัวอย่างการทำงานของ mail merge|

เพื่อทำการรวมจดหมายด้วย Aspose.Email ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างฟังก์ชันด้วยชื่อ signature
  2. สร้างอินสแตนซ์ของ MailMessage คลาส.
  3. ระบุผู้ส่ง ผู้รับ เรื่องและข้อความเนื้อหา
  4. สร้างลายเซ็นสำหรับส่วนท้ายของอีเมล
  5. สร้างอินสแตนซ์ของ TemplateRoutine คลาสและส่งต่อให้ MailMessage อินสแตนซ์
  6. รับลายเซ็นใน TemplateRoutine อินสแตนซ์
  7. สร้างอินสแตนซ์ของ DataTable คลาส.
  8. เพิ่มคอลัมน์ Receipt, FirstName และ LastName เป็นแหล่งข้อมูลในคลาส DataTable
  9. สร้างอินสแตนซ์ของ DataRow คลาส
  10. ระบุที่อยู่รับใบเสร็จ ชื่อและนามสกุลในอ็อบเจ็กต์ DataRow
  11. สร้างอินสแตนซ์ของ MailMessageCollection คลาส
  12. ระบุ TemplateRoutine และอินสแตนซ์ DataTable ใน MailMessageCollection อินสแตนซ์
  13. สร้างอินสแตนซ์ของ SmtpClient คลาสและระบุเซิร์ฟเวอร์ พอร์ท ชื่อผู้ใช้และรหัสผ่าน
  14. ส่งอีเมลโดยใช้ SmtpClient เมธอด class BulkSendAsync

โค้ดด้านล่างส่งอีเมลถึงคนหนึ่งจากสามคนอื่น