יצירת הודעות דוא"ל עם אפשרויות מותאמות ב‑C#

צור הודעת דוא"ל חדשה

כדי ליצור הודעת דוא"ל חדשה אתה יכול להשתמש ב MailMessage מחלקה. המחלקה MailMessage גם מאתחלת מאפייני הודעת הדוא"ל שנוצרה כגון כתובת האימייל של השולח, כתובות האימייל של הנמענים, נושא ההודעה, ותוכן גוף ההודעה בפורמט HTML.

התבונן בקוד הבא, עם שלבים מפורטים, כדי ליצור הודעת דוא"ל חדשה ולהגדיר את המאפיינים שלה.

  1. צור מופע חדש של ה‑ MailMessage מחלקה.
  2. הגדר את מאת מאפיין לכתובת הדוא"ל של השולח.
  3. הגדר את אל מאפיין לרשימה מופרדת בפסיקים של כתובות הדוא"ל של הנמענים.
  4. הגדר את נושא מאפיין לנושא ההודעה.
  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>"
};

הגדר קידוד טקסט ברירת מחדל

הגדר קידוד טקסט ברירת מחדל למאפיינים הבאים:

  • מאת: שם תצוגה
  • אל: שם תצוגה
  • נושא
  • גוף

השתמש ב- 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 class. מחלקה זו מכילה שני נכסים, LinkedResources ו BaseUri, המשמשים לפתרון כתובות URL בתוך תוכן המייל.

  • LinkedResources הוא אוסף של LinkedResource אובייקטים. כאשר מוצגים, כתובות URL בתוכן האימייל מותאמות תחילה לכתובות URL ב‑Content Link של כל LinkedResource אובייקט ב‑ LinkedResources האוסף ונפתרים.
  • BaseUri משמש את קורא המייל לפתור כתובות URL יחסיות בגוף, וגם לפתור כתובות Content Link יחסיות, ב‑ LinkedResources אוסף.

שקול את הקוד הבא עם שלבים מפורטים כדי להגדיר טקסט חלופי.

  1. צור מופע של MailMessage מחלקה.
  2. Create AlternateView לצפייה בהודעת אימייל באמצעות התוכן שהוגדר במחרוזת.
  3. הוסף טקסט חלופי באמצעות הוסף מתודה של 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 הוא גם אופציונלי ויכול להכיל מספר כתובות אימייל.

שקול את הקוד הבא, עם שלבים מפורטים, לציון מספר נמענים עבור הודעת אימייל.

שלבי קוד:

  1. צור מופע חדש של ה‑ MailMessage מחלקה.
  2. הגדר את מאת מאפיין לכתובת הדוא"ל של השולח.
  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 כדי לזהות את השולח או הנמען של האימייל. זה עשוי לכלול שם מלא, שם חיבה או מזהה אחר.

כאשר הודעת אימייל מוצגת בלקוח אימייל או בממשק webmail, שם התצוגה מוצג בדרך כלל ליד כתובת האימייל, מה שמקל על המשתמש לזהות מי שלח את ההודעה או למי היא מיועדת. כדי להוסיף שמות תצוגה לכתובות אימייל בהודעה, שקול את הקוד הבא עם שלבים מפורטים:

  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 class כגון:

  • תאריך property - מגדיר תאריך ושעה של אימייל. באופן ברירת מחדל, התאריך הוא התאריך בפועל שבו נשלחה ההודעה, והזמן הוא השעה שבה נשלחה, כפי שמוצג ב‑Microsoft Outlook. עם זאת, זמן ההגעה האמיתי של האימייל מתווסף על ידי שרת ה‑SMTP בכותרת המייל. לדוגמה, למטה נמצא כותרת מייל נפוצה, שבה תאריך מכוינת את שדה 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 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());
}

הערה: בקשות קבלת קבלה עשויות לא תמיד להיות מועדפות מכיוון ש:

  • לקוח דוא"ל עשוי לא לתמוך בפונקציה זו.
  • המשתמש הסופי עשוי לבטל פונקציונליות זו.
  • המשתמש הסופי עשוי לבחור לא לשלוח אותו.

התאמה אישית של כותרות אימייל

כותרות אימייל מייצגות תקן אינטרנט ו‑RFC מגדיר שדות כותרת שנכללים במסרי אימייל באינטרנט. ניתן לציין כותרת אימייל באמצעות MailMessage class. סוגי כותרות נפוצים מוגדרים ב‑ HeaderType class. זו מחלקה סגורה הפועלת כמחלקת מונה רגילה.

בדרך כלל, כותרת של אימייל מכילה את השדות הבאים:

  • 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

כדי להתאים כותרת של אימייל, עקוב אחרי 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

הכנסת כותרת במיקום ספציפי

ה הוסף שיטה של HeaderCollection מחלקה מוסיפה כותרת בסוף האוסף. עם זאת, לפעמים נדרש להכניס כותרת במיקום ספציפי. במצב כזה, ה הוסף השיטה לא תסייע. כדי לבצע זאת, השתמש ב- Insert שיטה של HeaderCollection. אם האוסף מכיל כותרות עם אותו שם, כותרת זו תתווסף לפני כותרות אחרות עם אותו שם. קטע הקוד הבא מראה כיצד להכניס כותרת במיקום ספציפי.

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

הוסף כותרות מותאמות

אפשר לציין כותרת דוא"ל באמצעות MailMessage מחלקה. כדי לציין כותרת מותאמת בהודעת דוא"ל, התבונן בדוגמת הקוד הבאה:

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

קטע הקוד למעלה יוצר כותרת אימייל בפורמט הבא:

secret-header: mystery

צור הודעות חתומות

Aspose.Email API מספקת את היכולת ליצור הודעות חתומות באמצעות אישורים. ה AttachSignature שיטה של MailMessage class יכולה לשמש לחתימה על הודעה לשמירה או אפילו לשליחת ההודעה באמצעות SmtpClient.

חתימה על הודעה

קטע הקוד הבא מראה כיצד לחתום על הודעה.

שימוש באופציית תעודה מנותקת

לקוחות אימייל מבוססי רשת עלולים לא להיות מסוגלים להציג את תוכן הגוף של הודעה חתומה. ניתן לטפל בכך על‑ידי ניתוק התעודה לפני שליחתה ללקוחות אימייל מבוססי רשת. דגל הניתוק במתודה העמוסה של AttachSignature ניתן להשתמש בזה. אם מוגדר ל‑true, התעודה מנותקת מהאימייל ולהפך. כדי לראות את גוף ההודעה החתומה בלקוחות אינטרנט, צריך ליצור MailMessage עם חתימה מנותקת. קטע הקוד הבא מראה כיצד להשתמש באפשרות תעודה מנותקת.