إنشاء رسائل بريد إلكتروني بخيارات مخصصة في 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، قد ترغب أيضًا في توفير نسخة نص عادي في حال كان بعض المستقبلين يستخدمون قارئات بريد لا تدعم محتوى HTML. لهذا الغرض استخدم الـ AlternateView فئة. لهذه الفئة خاصيتان، LinkedResources و BaseUri، والتي تُستخدم لحل عناوين URL داخل محتوى البريد.

  • LinkedResources هي مجموعة من LinkedResource الكائنات. عند العرض، تُطابق الروابط داخل محتوى البريد أولاً مع الروابط في Content Link لكل LinkedResource كائن في الـ LinkedResources المجموعة وتُحل.
  • BaseUri يستخدمه قارئ البريد لحل الروابط النسبية داخل الجسم، وكذلك لحل روابط Content Link النسبية، في الـ 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 حقل يعني نسخة كربونية. يستخدم لإرسال نسخة من رسالتك إلى أشخاص آخرين مهتمين أو مشاركين في الموضوع. حقل CC اختياري ويمكن أن يحتوي أيضًا على عناوين بريد متعددة. المستلمون في حقل CC يمكنهم رؤية من تلقى الرسالة أيضًا.

  • BCC حقل يعني نسخة كربونية مخفية. هو مشابه لحقل CC، لكن المستلمين في حقل BCC مخفيون عن باقي المستلمين. يكون حقل BCC مفيدًا عندما تريد حماية خصوصية بعض المستلمين أو تجنب إغراق صندوق بريدهم بالردود. حقل BCC اختياري ويمكن أن يحتوي على عناوين بريد متعددة.

انظر الكود التالي، مع خطوات تفصيلية، لتحديد عدة مستلمين لرسالة بريد إلكتروني.

خطوات الكود:

  1. إنشاء مثيل جديد من MailMessage فئة.
  2. اضبط From خاصية لعنوان البريد الإلكتروني للمرسل.
  3. اضبط إلى خاصية إلى مصفوفة من عناوين البريد الإلكتروني للمستلمين الأساسيين.
  4. اضبط CC خاصية إلى مصفوفة من عناوين البريد الإلكتروني للمستلمين الذين سيتلقون نسخة من الرسالة.
  5. اضبط Bcc خاصية إلى مصفوفة من عناوين البريد الإلكتروني للمستلمين الذين سيتلقون نسخة كربونية مخفية من الرسالة.

عينة الشيفرة:

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"}
};

إضافة أسماء عرض لعناوين البريد الإلكتروني

بالإضافة إلى عنوان البريد الإلكتروني، يمكن تضمين اسم عرض لتحديد مرسل أو مستلم الرسالة. قد يشمل الاسم الكامل للشخص، أو لقبًا، أو معرّفًا آخر.

عند عرض رسالة بريد إلكتروني في عميل بريد أو واجهة ويب ميل، يُظهر عادةً الاسم المعروض بجوار عنوان البريد الإلكتروني، مما يسهل على المستخدم التعرف على مرسل الرسالة أو المستلم المستهدف. لإضافة أسماء عرض إلى عناوين البريد في رسالة، انظر الكود التالي مع خطوات تفصيلية:

  1. حمل رسالة البريد من ملف باستخدام الـ MailMessage.Load طريقة.
  2. عيّن مرسل البريد باستخدام الـ From خاصية لكائن eml بإنشاء MailAddress كائن يحتوي على عنوان البريد الإلكتروني والاسم المعروض للمرسل.
  3. أضف مستلمًا إلى البريد الإلكتروني باستخدام الـ To خاصية لكائن eml، إذا لزم الأمر أضف قائمة CC (نسخة كربونية) باستخدام الـ CC خاصية، قائمة BCC (نسخة كربونية مخفية) باستخدام الـ 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 خاصية - تضبط التاريخ والوقت للبريد الإلكتروني. بشكل افتراضي، يكون التاريخ هو تاريخ إرسال الرسالة الفعلي، والوقت هو وقت الإرسال كما يعرضه 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 عددية.

انظر المثال التالي للكود:

// 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: يتيح للمستخدمين إرسال رسالة كـ "نسخة كربونية" أو "نسخة مجاملة". أي أن المستقبل ليس مُتوقعًا أن يرد أو يتصرف. عادةً ما يتم إبلاغ الموظفين الإشرافيين عبر الـ 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 كائن.

المقتطف البرمجي التالي يوضح كيفية ضبط رؤوس البريد الإلكتروني.

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 الفئة تُدرج رأسًا في نهاية المجموعة. ومع ذلك، قد يكون من الضروري أحيانًا إدراج رأس في موقع محدد. في هذه الحالة، الـ Add الطريقة لن تكون مفيدة. لتحقيق ذلك، استخدم الـ Insert طريقة الـ HeaderCollection. إذا احتوت المجموعة على رؤوس بنفس الاسم، سيُدرج هذا الرأس قبل غيره من الرؤوس ذات الاسم نفسه. يوضح المقتطف البرمجي التالي كيفية إدراج رأس في موقع محدد.

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

إضافة رؤوس مخصصة

يمكن تحديد رأس بريد إلكتروني باستخدام MailMessage فئة. لتحديد رأس مخصص في رسالة بريد إلكتروني، انظر مثال الشيفرة التالي:

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

تنتج قطعة الكود أعلاه رأس بريد إلكتروني بالتنسيق التالي:

secret-header: mystery

إنشاء رسائل موقعة

توفر Aspose.Email API القدرة على إنشاء رسائل موقعة باستخدام شهادات. الـ AttachSignature طريقة الـ MailMessage يمكن استخدام الفئة لتوقيع رسالة لحفظها أو حتى إرسالها باستخدام الـ SmtpClient.

توقيع رسالة

المقتطف البرمجي التالي يوضح لك كيفية توقيع رسالة.

استخدام خيار الشهادة المنفصلة

قد لا يتمكن عملاء البريد الإلكتروني المستندين إلى الويب من عرض محتوى جسم الرسالة الموقعة. يمكن معالجة ذلك بفصل الشهادة قبل إرسالها إلى عملاء البريد الويب. علمية الانفصال في الطريقة المفرّطة لـ AttachSignature يمكن استخدامها لتحقيق ذلك. إذا تم ضبطها على true، فإن الشهادة تُفصل عن البريد والعكس صحيح. لرؤية جسم الرسالة الموقعة في العملاء الويب، تحتاج إلى إنشاء MailMessage مع توقيع منفصل. يوضح المقتطف البرمجي التالي كيفية استخدام خيار الشهادة المنفصلة.