สร้างข้อความอีเมลด้วยตัวเลือกที่กำหนดเองใน C#
สร้างข้อความอีเมลใหม่
เพื่อสร้างข้อความอีเมลใหม่คุณสามารถใช้ MailMessage คลาส. คลาส MailMessage ยังเริ่มต้นคุณสมบัติของข้อความอีเมลที่สร้างขึ้น เช่น ที่อยู่อีเมลของผู้ส่ง, ที่อยู่อีเมลของผู้รับ, หัวเรื่องของอีเมล, และเนื้อหาข้อความอีเมลในรูปแบบ HTML.
พิจารณาโค้ดต่อไปนี้พร้อมขั้นตอนละเอียดเพื่อสร้างข้อความอีเมลใหม่และตั้งค่าคุณสมบัติต่างๆ.
- สร้างอินสแตนซ์ใหม่ของ MailMessage คลาส.
- ตั้งค่า From คุณสมบัติสำหรับที่อยู่อีเมลของผู้ส่ง.
- ตั้งค่า ถึง คุณสมบัติสำหรับรายการที่อยู่อีเมลของผู้รับที่คั่นด้วยเครื่องหมายจุลภาค.
- ตั้งค่า Subject คุณสมบัติสำหรับหัวเรื่องของอีเมล.
- ตั้งค่า HtmlBody คุณสมบัติสำหรับเนื้อหา HTML ของข้อความอีเมล.
// Create a new instance of MailMessage class
var message = new MailMessage
{
From = "from@domain.com",
To = "to1@domain.com, to2@domain.com",
Subject = "New message",
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>"
};
ตั้งค่าการเข้ารหัสข้อความเริ่มต้น
ตั้งค่าการเข้ารหัสข้อความเริ่มต้นสำหรับคุณสมบัติต่อไปนี้:
- จาก: ชื่อที่แสดง
- ถึง: ชื่อที่แสดง
- Subject
- Body
ใช้ MailMessage.PreferredTextEncoding คุณสมบัติเพื่อให้มั่นใจว่าข้อความทั้งหมดในคุณสมบัติข้างต้นถูกเข้ารหัสอย่างถูกต้องในข้อความอีเมล ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้คำภาษาฝรั่งเศสเป็นชื่อแสดงสำหรับที่อยู่อีเมล, หัวเรื่องและเนื้อหา.
// Create an instance of MailMessage
string dataDir = RunExamples.GetDataDir_Email();
MailMessage msg = new MailMessage();
// Set the default or preferred encoding. This encoding will be used as the default for the from/to email addresses, subject and body of message.
msg.PreferredTextEncoding = Encoding.GetEncoding(28591);
// Set email addresses, subject and body
msg.From = new MailAddress("dmo@domain.com", "démo");
msg.To.Add(new MailAddress("dmo@domain.com", "démo"));
msg.Subject = "démo";
msg.HtmlBody = "démo";
msg.Save(dataDir + "SetDefaultTextEncoding_out.msg", SaveOptions.DefaultMsg);
ตั้งค่า Mail Body
ตั้งค่า Plain Text Body
เนื้อหาเมลสามารถระบุโดยใช้ Body คุณสมบัติของ MailMessage คลาส.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
Body = "This is a plain text body"
};
ตั้งค่า HTML Body
เนื้อหาเมลยังสามารถระบุโดยใช้ HtmlBody คุณสมบัติของ MailMessage คลาส.
// Declare message as MailMessage instance
var eml = new MailMessage
{
// Specify HtmlBody
HtmlBody = "<html><body>This is the HTML body</body></html>"
};
คุณสามารถทำให้การสร้างอีเมล HTML ง่ายขึ้นโดยการโหลดไฟล์ HTML ที่มีอยู่พร้อมทรัพยากรที่ฝังอยู่ (เช่นรูปภาพ) Aspose.Email จะทำอัตโนมัติการฝังทรัพยากรเหล่านี้เป็นเนื้อหาอินไลน์.
นี่คือวิธีโหลดไฟล์ HTML พร้อมทรัพยากรของมัน:
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = @"C:\Temp", // folder where your images are stored
ShouldAddPlainTextView = true
};
var mailMessage = MailMessage.Load(@"body_content.html", htmlloadOptions);
mailMessage.From = senderEmail;
mailMessage.Subject = "New message from HTML";
// Save the message in EML format
mailMessage.Save(EmlfilePath, SaveOptions.DefaultEml);
นี้ HtmlLoadOptions คลาสที่มี PathToResources คุณสมบัตินี้บอก Aspose.Email ว่าจะหาเพิ่มรูปภาพที่อ้างอิงใน HTML ของคุณได้ที่ไหน ในระหว่างการโหลด ไลบรารีจะฝังรูปภาพเหล่านั้นอัตโนมัติเป็นทรัพยากรอินไลน์ (CID) HTML จะถูกอัปเดตภายในเพื่ออ้างอิงรูปภาพที่ฝังแทนเส้นทางไฟล์.
ผลลัพธ์คือไฟล์ .eml สุดท้ายจะเป็นไฟล์ที่มีทุกอย่างรวมไว้ และรูปภาพยังคงแสดงได้แม้หลังจากไฟล์ต้นฉบับถูกลบ.
ตั้งข้อความสำรอง
มุมมองสำรองในไฟล์ EML คือการแสดงผลเพิ่มเติมของเนื้อหาอีเมลที่สามารถใช้เพื่อให้การเรนเดอร์ข้อความอีเมลแตกต่างออกไป ตัวอย่างเช่น หากคุณส่งข้อความในรูปแบบ HTML คุณอาจต้องการให้เวอร์ชัน plain text ในกรณีที่ผู้รับบางคนใช้โปรแกรมอ่านเมลที่ไม่สามารถแสดงเนื้อหา HTML ได้ เพื่อวัตถุประสงค์นี้ให้ใช้ AlternateView class. คลาสนี้มีสองคุณสมบัติ, LinkedResources และ BaseUri, ซึ่งใช้เพื่อแก้ไข URL ภายในเนื้อหาอีเมล.
- LinkedResources เป็นคอลเลกชันของ LinkedResource อ็อบเจ็กต์ เมื่อเรนเดอร์แล้ว URL ภายในเนื้อหาอีเมลจะถูกจับคู่อันดับแรกกับ URL ใน Content Link ของแต่ละ LinkedResource อ็อบเจ็กต์ใน LinkedResources คอลเลกชันและแก้ไขแล้ว
- BaseUri ใช้โดยโปรแกรมอ่านเมลเพื่อแก้ไข URL ที่เป็น relative ภายในเนื้อหาและยังแก้ไข URL ของ Content Link ที่เป็น relative ใน LinkedResources คอลเลกชัน.
พิจารณาโค้ดต่อไปนี้พร้อมขั้นตอนละเอียดเพื่อกำหนดข้อความสำรอง
- สร้างอินสแตนซ์ของ MailMessage คลาส.
- สร้าง AlternateView เพื่อดูข้อความอีเมลโดยใช้เนื้อหาที่ระบุในสตริง
- เพิ่มข้อความสำรองโดยใช้ Add เมธอดของ MailMessage.AlternateViews คอลเลกชัน.
// Declare message as MailMessage instance
var eml = new MailMessage();
// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");
// Adding alternate text
eml.AlternateViews.Add(alternate);
ระบุการเข้ารหัสเนื้อหาอีเมล
Aspose.Email ใช้ BodyEncoding คุณสมบัติของ MailMessage class เพื่อระบุการเข้ารหัสเนื้อหาอีเมล ตัวอย่างเช่น:
eml.BodyEncoding = Encoding.UTF8;
ระบุผู้รับหลายคน
มีสามวิธีในการระบุผู้รับของข้อความอีเมล: ใช้ฟิลด์ To, CC, หรือ BCC
-
ฟิลด์ To เป็นผู้รับหลักของข้อความของคุณ คุณสามารถใส่ที่อยู่อีเมลหนึ่งหรือหลายรายการในฟิลด์นี้คั่นด้วยเครื่องหมายจุลภาค ฟิลด์ To เป็นข้อบังคับสำหรับทุกข้อความอีเมล
-
ฟิลด์ CC ย่อมาจาก carbon copy ใช้ส่งสำเนาข้อความของคุณให้กับคนอื่นที่สนใจหรือเกี่ยวข้องกับหัวข้อ ฟิลด์ CC เป็นทางเลือกและสามารถมีหลายที่อยู่อีเมลได้ ผู้รับในฟิลด์ CC สามารถเห็นว่ามีใครรับข้อความอีกบ้าง
-
BCC ฟิลด์ย่อมาจาก blind carbon copy คล้ายกับฟิลด์ CC แต่ผู้รับในฟิลด์ BCC จะถูกซ่อนไว้จากผู้รับอื่น ๆ ฟิลด์ BCC มีประโยชน์เมื่อคุณต้องการปกป้องความเป็นส่วนตัวของผู้รับบางคนหรือหลีกเลี่ยงการกองทัพอินบ็อกซ์ของพวกเขาด้วยการตอบกลับ ฟิลด์ BCC ยังเป็นทางเลือกและสามารถมีหลายที่อยู่อีเมลได้
พิจารณาโค้ดต่อไปนี้พร้อมขั้นตอนละเอียด เพื่อระบุผู้รับหลายคนสำหรับข้อความอีเมล
ขั้นตอนโค้ด:
- สร้างอินสแตนซ์ใหม่ของ MailMessage คลาส.
- ตั้งค่า From คุณสมบัติสำหรับที่อยู่อีเมลของผู้ส่ง.
- ตั้งค่า ถึง คุณสมบัติเป็นอาร์เรย์ของที่อยู่อีเมลของผู้รับหลัก
- ตั้งค่า CC คุณสมบัติเป็นอาร์เรย์ของที่อยู่อีเมลของผู้รับที่ได้รับสำเนาอีเมล
- ตั้งค่า Bcc คุณสมบัติเป็นอาร์เรย์ของที่อยู่อีเมลของผู้รับที่ได้รับ blind carbon copy ของอีเมล
ตัวอย่างโค้ด:
var eml = new MailMessage
{
// Specify From address
From = "sender@sender.com",
// Specify recipients’ mail addresses
To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
// Specify CC addresses
CC = {"CC1@receiver.com", "CC2@receiver.com"},
// Specify BCC addresses
Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};
เพิ่มชื่อแสดงให้กับที่อยู่อีเมล
นอกจากที่อยู่อีเมลแล้ว สามารถรวม display name เพื่อระบุผู้ส่งหรือผู้รับอีเมลได้ ซึ่งอาจเป็นชื่อเต็มของบุคคล, ชื่อเล่น, หรือข้อมูลระบุตัวอื่น
เมื่อข้อความอีเมลแสดงในไคลเอนต์อีเมลหรืออินเทอร์เฟซเว็บเมล ชื่อแสดงมักจะแสดงพร้อมกับที่อยู่อีเมล ทำให้ผู้ใช้ระบุได้ง่ายว่าข้อความมาจากใครหรือส่งถึงใคร เพื่อเพิ่มชื่อแสดงให้กับที่อยู่อีเมลในข้อความอีเมล ให้พิจารณาโค้ดต่อไปนี้พร้อมขั้นตอนละเอียด:
- โหลดข้อความอีเมลจากไฟล์โดยใช้
MailMessage.Loadเมธอด. - ตั้งค่าผู้ส่งอีเมลโดยใช้
Fromคุณสมบัติของอ็อบเจ็กต์ eml โดยสร้างใหม่MailAddressอ็อบเจ็กต์ที่มีอีเมลและชื่อแสดงของผู้ส่ง - เพิ่มผู้รับในอีเมลโดยใช้
Toคุณสมบัติของอ็อบเจ็กต์ eml, หากจำเป็นให้เพิ่มรายการ CC (Carbon Copy) โดยใช้CCคุณสมบัติ, รายการ BCC (Blind Carbon Copy) โดยใช้BccคุณสมบัติและเรียกAddเมธอดกับใหม่MailAddressอ็อบเจ็กต์ที่บรรจุอีเมลและชื่อแสดงของผู้รับ
ตัวอย่างโค้ด:
// Load eml from file
var eml = MailMessage.Load("test.eml");
eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");
// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));
// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));
ตั้งค่าคุณสมบัติเพิ่มเติม
ด้วย Aspose.Email คุณสามารถใช้คุณสมบัติเพิ่มเติมของ MailMessage class เช่น:
-
Date property - ตั้งค่า date and time ของอีเมล โดยค่าเริ่มต้น วันที่คือวันที่จริงที่ข้อความถูกส่งและเวลาคือเวลาที่ส่งตามที่แสดงใน Microsoft Outlook อย่างไรก็ตาม เวลาในการส่งอีเมลจริงจะถูกเพิ่มโดยเซิร์ฟเวอร์ SMTP เองในหัวเมล ตัวอย่างเช่น ด้านล่างคือหัวเมลทั่วไปที่ Date ตั้งค่าฟิลด์ Date
// Add by SMTP server in delivery emails 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 // Add by SMTP server in delivery emails Return-Path: <xyz@oikoscucine.it> // Add by SMTP server in delivery emails 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 From: "XYZ" <xyz@oikoscucine.it> To: <abc@aspose.com> Subject: For ABC // Date will set the Date field, outlook will show this as Date: Thu, 22 Feb 2007 20:58:51 +0300 Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0" X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD== X-Read: 1 -
MailPriority enumeration- ระบุระดับความสำคัญสำหรับการส่งข้อความอีเมล สามารถเป็นต่ำ, ปกติ หรือสูง ความสำคัญมีผลต่อความเร็วในการส่งและการจัดส่ง
-
MailSensitivity enumeration - ระบุระดับความอ่อนไหวห้าระดับ
-
XMailer- ระบุซอฟต์แวร์ที่สร้างข้อความอีเมล
โค้ดสแนปด้านล่างแสดงวิธีใช้แต่ละคุณสมบัติที่กล่าวถึงข้างต้น
var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
Date = DateTime.Now,
Priority = MailPriority.High,
Sensitivity = MailSensitivity.Normal,
XMailer = "Aspose.Email"
};
ขอรับการอ่าน
เพื่อขอ การรับการอ่าน, ใช้ Aspose.Email DeliveryNotificationOptions คุณสมบัติของ MailMessage class. คุณสมบัตินี้ประกอบด้วยค่าาของ DeliveryNotificationOptions enumeration.
พิจารณา code sample ด้านล่าง:
// Create an Instance of MailMessage class
var eml = new MailMessage
{
// Specify From, To, HtmlBody, DeliveryNotificationOptions field
From = "sender@sender.com",
To = "receiver@receiver.com",
HtmlBody = "<html><body>This is the Html body</body></html>",
DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};
eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");
// Create an instance of SmtpClient Class
var client = new SmtpClient
{
// Specify your mailing host server, Username, Password and Port No
Host = "smtp.server.com",
Username = "Username",
Password = "Password",
Port = 25
};
try
{
// Client.Send will send this message
client.Send(eml);
// Display ‘Message Sent’, only if message sent successfully
Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
Note: คำร้องขอรับการอ่านอาจไม่ได้รับการปฏิบัติเสมอเนื่องจาก:
- ไคลเอนต์เมลอาจไม่ได้ทำงานฟังก์ชันนั้น.
- ผู้ใช้ปลายทางอาจปิดการทำงานนั้นไว้
- ผู้ใช้ปลายทางอาจเลือกที่จะไม่ส่ง
ปรับแต่งหัวข้ออีเมล
ส่วนหัวของอีเมลปฏิบัติตามมาตรฐานอินเทอร์เน็ต: RFC ที่เกี่ยวข้องกำหนดฟิลด์ส่วนหัวที่รวมอยู่ในข้อความอีเมลบนอินเทอร์เน็ต ส่วนหัวของอีเมลสามารถระบุได้โดยใช้ MailMessage คลาส ชนิดส่วนหัวทั่วไปถูกกำหนดใน HeaderType คลาส เป็นคลาสที่ปิดการสืบทอดที่ทำงานเป็นการนับเลขแบบปกติ
โดยปกติ หัวข้ออีเมลจะมีฟิลด์เหล่านี้:
- 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
เพื่อปรับแต่งหัวข้ออีเมล ให้ทำตาม code steps นี้:
- สร้างอินสแตนซ์ของ MailMessage คลาส.
- ระบุ To, From, Cc, Bcc, ReplyTo, Subject, Date & XMailer โดยใช้อินสแตนซ์ของ MailMessage.
- สร้างอินสแตนซ์ของ MimeHeader คลาสและระบุ header ที่กำหนดเอง.
- เพิ่ม header ที่กำหนดเองไปยัง MailMessage อินสแตนซ์
ตัวอย่าง โค้ด ต่อไปนี้แสดงวิธีตั้งค่า header ของอีเมล.
var eml = new MailMessage
{
ReplyToList = "reply@reply.com",
From = "sender@sender.com",
To = "receiver1@receiver.com",
CC = "receiver2@receiver.com",
Bcc = "receiver3@receiver.com",
Subject = "test mail",
Date = new System.DateTime(2006, 3, 6),
XMailer = "Aspose.Email"
};
โค้ดตัวอย่างข้างบนจะสร้างส่วนหัวของอีเมลในรูปแบบต่อไปนี้:
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: Mon, 6 Mar 2006 00:00:00 +0000
X-Mailer: Aspose.Email
แทรก Header ที่ตำแหน่งเฉพาะ
นี้ Add เมธอดของ HeaderCollection คลาสแทรก header ที่ท้ายของคอลเลคชัน อย่างไรก็ตามบางครั้งอาจจำเป็นต้องแทรก header ที่ตำแหน่งเฉพาะ ในกรณีนั้น, the Add เมธอดนี้จะไม่เป็นประโยชน์. เพื่อทำให้สำเร็จ, ใช้ Insert เมธอดของ HeaderCollection. หากคอลเลคชันมี header ชื่อเดียวกัน header นี้จะถูกแทรกก่อน header อื่นที่มีชื่อเดียวกัน ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแทรก header ที่ตำแหน่งเฉพาะ.
eml.Headers.Insert("Received", "Value");
เพิ่ม Header ที่กำหนดเอง
ส่วนหัวของอีเมลสามารถระบุได้โดยใช้ MailMessage คลาส. เพื่อระบุ header ที่กำหนดเอง ในข้อความอีเมล ให้พิจารณาตัวอย่างโค้ดต่อไปนี้:
eml.Headers.Add("secret-header", "mystery");
โค้ดตัวอย่างข้างบนจะสร้างส่วนหัวของอีเมลในรูปแบบต่อไปนี้:
secret-header: mystery
สร้างข้อความที่ลงลายเซ็น
Aspose.Email API ให้ความสามารถในการสร้างข้อความที่ลงลายเซ็นโดยใช้ใบรับรอง. The AttachSignature เมธอดของ MailMessage คลาสสามารถใช้เพื่อเซ็นข้อความเพื่อบันทึกหรือแม้กระทั่งส่งโดยใช้ SmtpClient.
เซ็นข้อความ
AttachSignature ส่งคืน ใหม่ ที่ลงนาม MailMessage เป็นอินสแตนซ์และไม่ทำให้ข้อความต้นฉบับเปลี่ยนแปลงใด ๆ ดังนั้นให้บันทึกหรือส่งออบเจ็กต์ที่ส่งกลับ ลายเซ็นสามารถถูกลบออกได้ในภายหลังด้วย RemoveSignature, ซึ่งจะส่งคืนข้อความต้นฉบับพร้อมเนื้อหาที่ถูกต้อง
โค้ดตัวอย่างต่อไปนี้แสดงวิธีลงนามข้อความ
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_SMTP();
string privateCertFile = dataDir + "MartinCertificate.pfx";
// A private key is required for signing
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "password");
MailMessage msg = new MailMessage("userfrom@gmail.com", "userto@gmail.com", "Signed message only", "Test Body of signed message");
// AttachSignature returns a new signed message, the original msg is left intact
MailMessage signed = msg.AttachSignature(privateCert);
signed.Save(dataDir + "SignedMessage_out.eml", SaveOptions.DefaultEml);
// The signature can be removed to get the original message back
MailMessage unsigned = signed.RemoveSignature();
การใช้ตัวเลือกใบรับรองแยกส่วน
ไคลเอนต์อีเมลแบบเว็บอาจไม่สามารถแสดงเนื้อหาของข้อความที่เซ็นได้ สามารถแก้ไขได้โดยการแยกใบรับรองก่อนส่งไปยังไคลเอนต์แบบเว็บ ธ旗แยกส่วนในเมธอดที่โอเวอร์โหลดของ AttachSignature สามารถใช้เพื่อทำเช่นนี้ หากตั้งค่าเป็น true ใบรับรองจะถูกแยกออกจากอีเมลและในทางกลับกัน เพื่อให้เห็นเนื้อหาข้อความที่เซ็นในไคลเอนต์แบบเว็บ คุณต้องสร้าง MailMessage พร้อมลายเซ็นแยกส่วน ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ตัวเลือกใบรับรองแยกส่วน
string privateCertFile = dataDir + "MartinCertificate.pfx";
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "anothertestaccount");
MailMessage msg = new MailMessage("user@domain.com", "receiver@domain.com", "subject:Signed message only by AE", "body:Test Body of signed message by AE");
MailMessage signed = msg.AttachSignature(privateCert, true);
SmtpClient smtp = GetSmtpClient();
try
{
smtp.Send(signed);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}