Create MIME messages using C#

เมื่อส่งอีเมล คุณอาจต้องส่งเนื้อหามัลติมีเดีย เช่น ภาพ เสียง และวิดีโอ นี่คือที่ที่ข้อความ MIME (Multipurpose Internet Mail Extensions) เข้ามาในบทความนี้ เราจะสำรวจวิธีการสร้าง EML ข้อความโดยใช้โปรแกรมใน C# เมื่อสิ้นสุดบทความ คุณจะเข้าใจ วิธีการสร้างข้อความ MIME เพิ่มภาพไปยังเนื้อหา HTML ของอีเมลและบันทึกอีเมลในรูปแบบ EML

.NET API เพื่อสร้างข้อความ MIME

ก่อนที่คุณจะสร้างข้อความ MIME แรกของคุณ ขั้นตอนแรกคือการติดตั้ง Aspose.Email for .NET ในโปรเจคของคุณ มันเป็นไลบรารีที่ทรงพลังสำหรับนักพัฒนา C# ที่ให้ชุดเครื่องมือที่ครอบคลุมสำหรับการทำงานกับข้อความอีเมล รวมถึงความสามารถในการสร้างข้อความ MIME โดยใช้โปรแกรม ไลบรารีช่วยให้นักพัฒนาจัดการแง่มุมต่างๆ ของข้อความ MIME ได้ง่าย เช่น ไฟล์แนบ เนื้อหา หัวข้อ การเข้ารหัส และอื่นๆ คุณสามารถติดตั้งไลบรารีผ่าน NuGet หรือ ดาวน์โหลด DLL ของมัน

PM> Install-Package Aspose.Email

สร้างไฟล์ EML จากศูนย์

เมื่อ API ของคุณถูกติดตั้งเรียบร้อยแล้ว ถึงเวลาที่จะสร้าง eml แรกของคุณจากศูนย์ หนึ่งในวิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้คลาส MailMessage จาก Aspose.Email คลาส MailMessage ช่วยให้คุณสร้างวัตถุข้อความอีเมลด้วยคุณสมบัติต่างๆ และวิธีการที่ให้คุณตั้งค่าผู้ส่ง ผู้รับ หัวข้อ เนื้อหา ไฟล์แนบ หัวข้อ และรายละเอียดอื่นๆ ของอีเมลของคุณ

ขั้นตอนต่อไปนี้และโค้ดตัวอย่างจะช่วยให้คุณสร้าง EML จากศูนย์:

  • สร้างวัตถุ MailMessage ใหม่โดยใช้ตัวสร้างเริ่มต้น
  • ตั้งค่าคุณสมบัติของวัตถุ MailMessage ตามความต้องการของคุณ
  • บันทึกวัตถุ MailMessage ไปยังไฟล์ EML โดยใช้วิธีการ Save
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

วิธีการ Save ของคลาส MailMessage ใช้พารามิเตอร์สองตัว: เส้นทางไฟล์และตัวเลือกการบันทึก ตัวเลือกการบันทึกระบุรูปแบบของไฟล์เอาต์พุต

เพิ่มภาพไปยังเนื้อหา HTML

ในการทำฟังก์ชันนี้ คุณต้องฝังภาพในเนื้อหา HTML คุณสามารถใช้แท็ก “img” เพื่อทำเช่นนี้

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการเพิ่มภาพไปยังเนื้อหา HTML ของข้อความ

  • เนื้อหา HTML ประกอบด้วยแท็กภาพที่มีแอตทริบิวต์แหล่งข้อมูลตั้งค่าเป็น cid:image1
  • คลาส AlternateView ถูกใช้เพื่อรับมุมมองทางเลือกของเนื้อหาข้อความที่มีภาพฝังอยู่
  • คลาส LinkedResource ถูกใช้เพื่อแสดงภาพที่ฝังอยู่และ ID เนื้อหาของมันตั้งค่าเป็น image1
  • ในที่สุด มุมมองทางเลือกจะถูกเพิ่มไปยังคอลเลกชันมุมมองทางเลือกของข้อความ
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

สร้างไฟล์ EML จากไฟล์ HTML

วิธีหนึ่งในการทำเช่นนี้คือการเริ่มต้นด้วยไฟล์ HTML และแปลงมันเป็น EML สิ่งนี้อาจมีประโยชน์หากคุณมี HTML ที่คุณต้องการส่งเป็นข้อความอีเมล สำหรับวัตถุประสงค์นี้เราต้องมีเนื้อหา HTML ก่อน มาสร้างไฟล์นี้ว่า content.html นี่คือตัวอย่างของมัน:

<!DOCTYPE html>
<html>
<head>
	<title>อีเมลของฉัน</title>
</head>
<body>
	<h1>สวัสดี,</h1>
	<img src="logo.png" alt="โลโก้">
	<p>นี่คืออีเมลแรกของฉันที่สร้างจาก HTML.</p>
</body>
</html>

นอกจากนี้ คุณต้องเตรียมภาพทั้งหมดที่มีอยู่ใน HTML และระบุเส้นทางที่ถูกต้องไปยังพวกเขาในไฟล์ HTML

ตอนนี้เราสามารถสร้าง MailMessage ได้โดยการตั้งค่าเนื้อหา HTML จาก content.html

  • ก่อนอื่น สร้างวัตถุ HtmlLoadOptions ใหม่
  • ตั้งค่าสตริงที่มีเส้นทางไปยังภาพใน PathToResources
  • ตั้งค่าคุณสมบัติ ShouldAddPlainTextView เป็น true หาก EML ควรมี AlternateView ที่มีข้อความธรรมดา
  • สร้างวัตถุ MailMessage โดยการโหลดไฟล์ HTML และส่งวัตถุ HtmlLoadOptions เป็นพารามิเตอร์
  • ตั้งค่าคุณสมบัติข้อความเพิ่มเติม
  • ในที่สุด บันทึกวัตถุ MailMessage ไปยังไฟล์ EML โดยใช้วิธีการ Save
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

เคล็ดลับในการปรับปรุงการแสดงผลของข้อความ HTML ใน Outlook

ในการดูข้อความ HTML ของคุณใน Outlook คุณต้องมั่นใจว่าโค้ดของมันเข้ากันได้กับเครื่องมือเรนเดอร์ของ Outlook ซึ่งแตกต่างจากเบราว์เซอร์เว็บส่วนใหญ่ ปัญหาทั่วไปบางประการที่อาจมีผลต่ออีเมล HTML ของคุณใน Outlook มีดังนี้:

  • Outlook ไม่รองรับบางแท็กและคุณสมบัติ CSS เช่น รูปภาพพื้นหลัง ลอย ขอบ มาร์จิ้น การเติม ฯลฯ คุณอาจต้องใช้สไตล์แบบ inline ตาราง หรือความคิดเห็นเงื่อนไขเพื่อให้ได้เลย์เอาต์และรูปแบบที่ต้องการ
  • Outlook อาจเพิ่มช่องว่างหรือบรรทัดเพิ่มเติมระหว่างองค์ประกอบหรือทำการลบบางองค์ประกอบโดยสิ้นเชิง คุณอาจต้องใช้ช่องว่างที่ไม่แตกหัก ช่องว่างที่มีความกว้างเป็นศูนย์ หรือเซลล์ตารางว่างเพื่อป้องกันสิ่งนี้
  • Outlook อาจเปลี่ยนการเข้ารหัสหรือชุดตัวอักษรของไฟล์ HTML ของคุณ ซึ่งอาจทำให้ตัวอักษรบางตัวแสดงผลไม่ถูกต้อง คุณอาจต้องระบุการเข้ารหัสและชุดตัวอักษรในนั้นโดยใช้แท็กเมตา

สรุป

ในบล็อกโพสต์นี้ คุณได้เรียนรู้วิธีการสร้างข้อความ MIME โดยใช้โปรแกรมใน C# ด้วยการใช้ Aspose.Email คู่มือทีละขั้นตอนและตัวอย่างโค้ดได้แสดงวิธีการสร้างไฟล์ eml จากศูนย์และจากไฟล์ HTML เพิ่มภาพไปยังเนื้อหา HTML ของข้อความอีเมล และรองรับทั้งหมดที่กล่าวถึงด้วยเคล็ดลับที่มีประโยชน์เกี่ยวกับวิธีการปรับปรุงการแสดงผลของข้อความ HTML ของคุณใน Outlook

  • คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ Aspose.Email for .NET และลองใช้งานฟรี
  • คุณยังสามารถตรวจสอบฟีเจอร์และฟังก์ชันเพิ่มเติมของ Aspose.Email ใน เอกสาร
  • ยินดีต้อนรับคำถามของคุณใน ฟอรัม

ดูเพิ่มเติม