ایجاد پیام‌های ایمیل با گزینه‌های سفارشی در C#

ایجاد پیام ایمیل جدید

برای ایجاد یک پیام ایمیل جدید می‌توانید از MailMessage کلاس. کلاس MailMessage همچنین ویژگی‌های پیام ایمیل ایجاد شده را مانند آدرس ایمیل فرستنده، آدرس‌های ایمیل دریافت‌کنندگان، موضوع ایمیل و محتوای بدنه ایمیل در قالب HTML مقداردهی اولیه می‌کند.

کد زیر را در نظر بگیرید، با گام‌های دقیق، برای ایجاد یک پیام ایمیل جدید و تنظیم ویژگی‌های آن.

  1. یک نمونهٔ جدید از MailMessage کلاس.
  2. تنظیم From ویژگی برای آدرس ایمیل فرستنده.
  3. تنظیم به ویژگی برای لیست کاما جدا شدهٔ آدرس‌های ایمیل دریافت‌کنندگان.
  4. تنظیم Subject ویژگی برای موضوع ایمیل.
  5. تنظیم 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
  • بدنه

از MailMessage.PreferredTextEncoding ویژگی برای اطمینان از این که تمام متن‌ها در ویژگی‌های بالا به‌درستی در پیام ایمیل رمزگذاری شوند. کد نمونه زیر نشان می‌دهد چگونه از یک کلمه فرانسوی به عنوان نام نمایشی برای آدرس‌های ایمیل، موضوع و بدنه استفاده کنید.

تنظیم بدنه ایمیل

تنظیم متن ساده

متن ایمیل می‌تواند با استفاده از بدنه ویژگی MailMessage کلاس.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

تنظیم متن HTML

متن ایمیل همچنین می‌تواند با استفاده از مشخص شود HtmlBody ویژگی MailMessage کلاس.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

تنظیم متن جایگزین

یک نمای جایگزین در یک فایل EML یک نمایش اضافی از محتوای ایمیل است که می‌تواند برای ارائه رندر متفاوتی از پیام ایمیل استفاده شود. برای مثال، اگر پیامی را به صورت HTML ارسال کنید، ممکن است بخواهید نسخه plain text نیز ارائه دهید تا در صورتی که برخی دریافت‌کنندگان از برنامه‌خوان‌های ایمیلی استفاده می‌کنند که نمی‌توانند محتوای HTML را نمایش دهند، متن ساده در دسترس باشد. برای این منظور از AlternateView کلاس. این کلاس دو ویژگی دارد، LinkedResources و BaseUri، که برای حل URLها داخل محتوای ایمیل استفاده می‌شوند.

  • LinkedResources یک مجموعه از LinkedResource اشیاء. هنگام رندر، URLهای داخل محتوای ایمیل ابتدا با URLهای موجود در Content Link هر یک مقایسه می‌شوند. LinkedResource شیء در LinkedResources مجموعه و حل می‌شوند.
  • BaseUri توسط برنامه خواندن ایمیل برای حل مسیرهای URL نسبی داخل متن و همچنین URLهای لینک محتوا استفاده می‌شود، در LinkedResources مجموعه.

کد زیر را با مراحل جزئی در نظر بگیرید تا متن جایگزین را تنظیم کنید.

  1. یک نمونه از MailMessage کلاس.
  2. Create AlternateView برای مشاهده پیام ایمیل با استفاده از محتوای مشخص‌شده در رشته.
  3. متن جایگزین را با استفاده از اضافه کنید 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 کلاسی برای تعیین رمزنگاری متن ایمیل. برای مثال:

eml.BodyEncoding = Encoding.UTF8;

مشخص کردن چندین دریافت‌کننده

سه روش برای مشخص کردن دریافت‌کنندگان یک پیام ایمیل وجود دارد: استفاده از فیلدهای To، CC یا BCC.

  • فیلد To گیرنده اصلی پیام شماست. می‌توانید یک یا چند آدرس ایمیل را در این فیلد وارد کنید، که با کاما جدا می‌شوند. فیلد To برای هر پیام ایمیلی اجباری است.

  • فیلد CC مخفف Carbon Copy است. از این فیلد برای ارسال یک کپی از پیام شما به افراد دیگری که به موضوع علاقه‌مند یا درگیر هستند، استفاده می‌شود. فیلد CC اختیاری است و می‌تواند شامل چندین آدرس ایمیل باشد. دریافت‌کنندگان در فیلد CC می‌توانند ببینند چه کسی دیگر پیام را دریافت کرده است.

  • فیلد BCC مخفف Blind Carbon Copy است. این فیلد مشابه فیلد CC است، اما دریافت‌کنندگان در فیلد BCC از دیگر دریافت‌کنندگان مخفی هستند. فیلد BCC زمانی مفید است که بخواهید حریم خصوصی برخی دریافت‌کنندگان را محافظت کنید یا از شلوغی صندوق ورودی آن‌ها با پاسخ‌ها جلوگیری کنید. فیلد BCC همچنین اختیاری است و می‌تواند شامل چندین آدرس ایمیل باشد.

کد زیر را با مراحل جزئی در نظر بگیرید تا چندین دریافت‌کننده برای یک پیام ایمیلی مشخص کنید.

مراحل کد:

  1. یک نمونهٔ جدید از MailMessage کلاس.
  2. تنظیم From ویژگی برای آدرس ایمیل فرستنده.
  3. تنظیم به ویژگی به آرایه‌ای از آدرس‌های ایمیل دریافت‌کنندگان اصلی اضافه می‌شود.
  4. تنظیم CC ویژگی به آرایه‌ای از آدرس‌های ایمیل دریافت‌کنندگانی که یک کپی از ایمیل دریافت خواهند کرد، اضافه می‌شود.
  5. تنظیم 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 برای شناسایی فرستنده یا دریافت‌کننده ایمیل اضافه کرد. این می‌تواند شامل نام کامل شخص، لقب یا سایر شناسه‌ها باشد.

وقتی یک پیام ایمیل در یک کلاینت ایمیل یا رابط وب‌میل نمایش داده می‌شود، نام نمایشی معمولاً همراه با آدرس ایمیل نشان داده می‌شود که برای کاربر شناسایی فرستنده یا گیرنده پیام را آسان تر می‌کند. برای افزودن نام‌های نمایشی به آدرس‌های ایمیل در یک پیام ایمیل، کد زیر را با مراحل جزئی در نظر بگیرید:

  1. پیام ایمیل را از یک فایل با استفاده از بارگیری کنید MailMessage.Load متد.
  2. ارسال‌کننده ایمیل را با استفاده از تنظیم کنید From ویژگی شیء eml با ایجاد یک جدید MailAddress شیئی که آدرس ایمیل و نام نمایشی فرستنده را دارد.
  3. با استفاده از، یک دریافت‌کننده به ایمیل اضافه کنید To ویژگی شیء eml، در صورت لزوم فهرست CC (Carbon Copy) را با استفاده از CC ویژگی، فهرست BCC (Blind Carbon Copy) را با استفاده از Bcc ویژگی و فراخوانی Add متد با یک جدید MailAddress شیئی که آدرس ایمیل و نام نمایشی دریافت‌کننده را شامل می‌شود.

نمونه کد:

// Load eml from file
var eml = MailMessage.Load(Data.Email/"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 کلاسی مانند:

  • Date ویژگی - date and time یک ایمیل را تنظیم می‌کند. به طور پیش‌فرض، تاریخ تاریخ واقعی ارسال پیام است و زمان نیز زمان ارسال آن است، همان‌طور که در Microsoft Outlook نمایش داده می‌شود. با این حال، زمان واقعی تحویل ایمیل توسط خود سرور SMTP در هدر ایمیل افزوده می‌شود. برای مثال، در زیر یک هدر رایج ایمیل آورده شده است، که Date فیلد Date را تنظیم می‌کند.

    // For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
    
    // 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 شمارش‌گر- سطوح اولویت برای ارسال پیام ایمیل را مشخص می‌کند. می‌تواند کم، معمولی یا بالا باشد. اولویت بر سرعت انتقال و تحویل تأثیر می‌گذارد.

  • MailSensitivity شمارش‌گر - پنج سطح حساسیت را مشخص می‌کند.

  • 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 کلاس. این ویژگی شامل مقادیر DeliveryNotificationOptions شمارش‌گر.

کد 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());
}

توجه: درخواست‌های رسیدخوانی ممکن است همیشه پذیرفته نشوند زیرا:

  • یک کلاینت ایمیل ممکن است این قابلیت را پیاده‌سازی نکرده باشد.
  • کاربر نهایی ممکن است این قابلیت را غیرفعال کرده باشد.
  • کاربر نهایی ممکن است تصمیم بگیرد که آن را ارسال نکند.

سفارشی‌سازی سرآیندهای ایمیل

هدرهای ایمیل نمایانگر یک استاندارد اینترنتی هستند و 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 مایکروسافت 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 کلاس اضافه کنید و سرصفحه سفارشی را مشخص کنید.
  • سرصفحه سفارشی را به MailMessage نمونه.

کد نمونه زیر نشان می‌دهد چگونه سرصفحه‌های ایمیل را تنظیم کنید.

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: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email

درج سرصفحه در مکان خاص

این Add متد از HeaderCollection کلاس یک سرصفحه را در انتهای مجموعه وارد می‌کند. با این حال، گاهی ممکن است نیاز باشد سرصفحه‌ای را در مکان خاصی وارد کنید. در چنین حالتی، the Add متد کمک نمی‌کند. برای دستیابی به این هدف، از Insert متد از HeaderCollection. اگر مجموعه شامل سرصفحه‌هایی با نام یکسان باشد، این سرصفحه قبل از سرصفحه‌های دیگر با همان نام وارد می‌شود. کد نمونه زیر نشان می‌دهد چگونه یک سرصفحه را در مکان خاصی وارد کنید.

eml.Headers.Insert("Received", "Value");

افزودن سرصفحات سفارشی

یک سرصفحه ایمیل می‌تواند با استفاده از MailMessage کلاس. برای تعیین یک سرصفحه سفارشی در پیام ایمیل، نمونه کد زیر را در نظر بگیرید:

eml.Headers.Add("secret-header", "mystery");

قطعه کد بالا هدر ایمیل را در قالب زیر تولید می‌کند:

secret-header: mystery

ایجاد پیام‌های امضاشده

API Aspose.Email قابلیت ایجاد پیام‌های امضاشده با استفاده از گواهی‌ها را فراهم می‌کند. The AttachSignature متد از MailMessage کلاس می‌تواند برای امضای یک پیام جهت ذخیره‌سازی یا حتی ارسال آن با استفاده از SmtpClient.

امضای یک پیام

قطعه کد زیر نشان می‌دهد چگونه یک پیام را امضا کنید.

استفاده از گزینه گواهی جداشده

کلاینت‌های ایمیل وب‑بنیاد ممکن است نتوانند محتوای بدنه یک پیام امضاشده را نمایش دهند. این مشکل می‌تواند با جدا کردن گواهی قبل از ارسال به کلاینت‌های وب‑بنیاد برطرف شود. پرچم جداشده در متد بارگذاری شدهٔ AttachSignature می‌تواند برای تحقق این مورد استفاده شود. اگر به true تنظیم شود، گواهی از ایمیل جدا می‌شود و بالعکس. برای دیدن بدنه پیام امضاشده در کلاینت‌های وب‑بنیاد، باید ایجاد کنید MailMessage با امضای جداشده. قطعه کد زیر نشان می‌دهد چگونه گزینه گواهی جداشده را استفاده کنید.