إنشاء وإدارة رسائل البريد الإلكتروني
إنشاء رسالة بريد إلكتروني جديدة
الـ MailMessage الفئة تمثل رسالة بريد إلكتروني وتسمح للمطورين بإنشاء رسائل بريد جديدة. يمكن إرفاق خصائص البريد الأساسية مثل From و To و Subject والجسم بسهولة مع رسالة البريد الجديدة. بالمثل يمكننا حفظ رسالة البريد بصيغ مختلفة مثل EML و MSG و MHTML.
- إنشاء مثيل من الـ MailMessage فئة.
- تعيين خصائص رسالة البريد.
- احفظ رسالة البريد بتنسيقات مختلفة.
تُظهر لك قطعة الكود التالية كيفية إنشاء بريد إلكتروني جديد بخصائص مختلفة.
تحديد مستلمين متعددين
الـ MailMessage الكائن يمثل رسالة بريد إلكتروني. كائنات الـ MailMessage الفئة تُستخدم لإنشاء رسائل بريد تُرسل إلى خادم SMTP باستخدام الـ SmtpClient الفئة. تُظهر هذه المقالة كيفية تحديد أكثر من عنوان بريد إلكتروني. يمكن تحديد عناوين البريد باستخدام الـ MailMessage الفئة. هم:
- To - يمكن تحديد عناوين المستلمين في الحقل ‘To’. مستلمو الحقل ‘To’ هم الجمهور الأساسي للرسالة. يمكن أن يكون هناك أكثر من عنوان مستلم.
- Cc - الـ CC يعني "نسخة كربونية" أو "نسخة مجاملة"، ويسمح لك بإضافة مستلمين يحتاجون إلى رؤية البريد لكن لا يُتوقع منهم اتخاذ إجراء. مثال: المديرون أو أعضاء فريقك الذين يحتاجون إلى متابعة المحادثة. باستخدام Aspose.Email، يمكن تحديد عناوين CC في الكود الخاص بك. بهذه الطريقة، يمكن نسخ الرسائل التلقائية أو جميع الرسائل إلى عنوان معين إلى الأطراف المعنية.
- Bcc - نسخة مخفية (Blind Carbon Copy)، تتيح لك إرسال بريد إلكتروني إلى مستلم يكون مخفيًا عن باقي المستلمين. حيث يظهر الـ CC في معلومات البريد التي يراها المستلمون الرئيسيون، لا يظهر الـ Bcc. يُستخدم للإشعارات المخفية.
لتحديد عناوين بريد إلكتروني متعددة في رسالة بريد إلكتروني، اتبع هذه الخطوات:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين From والعديد من عناوين To و Cc و Bc باستخدام الـ
MailMessageكائن. - إنشاء مثيل من الـ SmtpClient فئة وإرسال البريد باستخدام طريقة Send.
توضح عينة الشفرة أدناه كيفية تحديد عناوين To و CC و BCC المتعددة.
تعيين أسماء العرض للمرسل والمستلم
تُظهر عينات البرمجة أدناه كيفية تحويل عناوين البريد إلى أسماء ودية في رسالة بريد إلكتروني. الاسم الودي هو اسم أكثر قابلية للقراءة من عنوان البريد، مثل John Smith بدلاً من js346@domain.com. عند إرسال بريد إلكتروني، يمكن ربط اسم ودي بعنوان البريد في الـ MailMessage منشئ الفئة.
لتغيير عناوين البريد إلى أسماء ودية في رسالة بريد إلكتروني، اتبع هذه الخطوات:
- إنشاء مثيل من الـ MailMessage الفئة وحدد عناوين البريد في حقلي To و From مع أسماء صديقة.
- حدد عناوين البريد Cc و Bcc مع أسماء صديقة عن طريق استدعاء الـ MailMessage منشئ الفئة في الـ
MailMessageكائن. - إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد باستخدام الـ إرسال طريقة.
تُظهر الفقرة البرمجية التالية كيفية عرض الأسماء لعناوين البريد الإلكتروني.
تعيين موضوع البريد الإلكتروني
الـ MailMessage الفئة تسمح لك بتحديد ملخص مختصر لمحتوى الرسالة باستخدام الـ الموضوع الخاصية. تُظهر عينة الكود التالية كيفية إنشاء بريد إلكتروني وتحديد موضوعه:
from aspose.email import MailMessage
# Create a new email message
message = MailMessage()
# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"
# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."
# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")
ضبط جسم البريد الإلكتروني
إلى جانب موضوع الرسالة، يمكن تحديد جسم البريد باستخدام نفس الـ MailMessage الفئة. يمكن للبريد أن يحتوي على عدة أجسام. هناك نوعان من أجسام الرسائل في الفئة:
- جسم HTML
- نص الجسم
بالإضافة إلى HtmlBody و TextBody, لدى Aspose.Email خاصيتين للقراءة فقط متعلقتين بجسم الرسالة:
IsBodyText: يُخبر المستخدم ما إذا كان الجسم نصًا.IsBodyHtml: يُخبر المستخدم ما إذا كان الجسم HTML أم نصًا عاديًا.
توضح هذه المقالة كيفية تعريف نص عادي أو نص HTML للجسم، وضبط النص البديل وترميز جسم البريد.
تعيين جسم HTML
يُستخدم جسم HTML لتحديد محتوى HTML لجسم الرسالة. يجب أن يكون جسم HTML محاطًا بين وسوم . تُظهر لك قطعة الكود التالية كيفية ضبط جسم HTML.
تعيين النص البديل
استخدم الـ AlternateView الفئة لتحديد نسخ من رسالة البريد الإلكتروني بصيغ مختلفة. على سبيل المثال، إذا أرسلت رسالة بتنسيق HTML، قد ترغب أيضًا في توفير نسخة نصية عادية في حال كان بعض المستقبلين يستخدمون برامج قراءة لا تستطيع عرض محتوى HTML. تحتوي هذه الفئة على خاصيتين، linked_resources و base_uri، والتي تُستخدم لحل عناوين URL داخل محتوى البريد.
- LinkedResources هي مجموعة من كائنات LinkedResources. عند العرض، يتم أولاً مطابقة عناوين URL داخل محتوى البريد الإلكتروني مع عناوين URL في Content Link لكل كائن LinkedResources في مجموعة LinkedResources، ثم يتم حلها.
- يُستخدم BaseUri بواسطة قارئ البريد لحل عناوين URL النسبية داخل الجسم، وكذلك لحل عناوين URL روابط المحتوى النسبية، في مجموعة LinkedResources.
تُظهر الفقرة البرمجية التالية كيفية تعيين النص البديل.
ميزات MailMessage
الـ MailMessage الفئة تمثل محتوى رسالة بريد إلكتروني. نماذج الفئة هي MailMessage تُستخدم الفئة لبناء رسالة بريد إلكتروني يتم نقلها إلى خادم SMTP للتسليم باستخدام الـ SmtpClient فئة. يوضح هذا المقال كيفية الاستخدام MailMessage ميزات فئة utility للتحكم في ميزات البريد الإلكتروني التالية:
- التاريخ والوقت - من خلال الـ MailMessage خاصية class Date تُمكننا من الحصول على تاريخ ووقت البريد الإلكتروني أو تعيينهما.
- أولوية الرسالة - الـ MailPriority فئة تُحدد مستويات الأولوية لإرسال رسالة بريد إلكتروني. يمكن أن تكون منخفضة أو عادية أو عالية. تؤثر الأولوية على سرعة الإرسال والتسليم.
- حساسية الرسالة - الـ MailSensitivity فئة تُحدد خمس مستويات للحساسية.
- إشعار التسليم - إشعارات التسليم تُخبر المُرسِل بأن البريد الإلكتروني الذي أرسله قد تم تسليمه إلى صندوق الوارد للمستلم.
بشكل افتراضي، يمثل الحقل Date التاريخ الفعلي الذي تم إرسال الرسالة فيه، وTime يمثل الوقت الذي أُرسلت فيه، كما يعرضه Microsoft Outlook. ومع ذلك، يتم إضافة وقت تسليم البريد الفعلي من قبل خادم SMTP نفسه في رأس الرسالة. على سبيل المثال، أدناه رأس بريد شائع، حيث تحدد Date حقل Date.
import aspose.email as ae
from aspose.email import MailMessage
# Create a new MailMessage instance
message = MailMessage()
# Add SMTP headers to the message
message.headers.add("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")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("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")
# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
توضع الفقرة البرمجية أدناه كيفية استخدام كل ميزة من المذكورات أعلاه.
import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime
# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
طلب إيصال قراءة
تظهر عينات البرمجة أدناه كيفية طلب إيصال قراءة. الـ MailMessage فئة DeliveryNotificationOptions خاصية التعداد تصف خيارات إشعار التسليم للبريد الإلكتروني. لطلب إيصال قراءة بعد إرسال بريد إلكتروني، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد المرسل، المستقبل وجسم HTML للبريد في الـ MailMessage كائن.
- حدد الـ DeliveryNotificationOptions في أخرى MailMessage مثيلات.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد باستخدام طريقة Send.
قد لا تُنفّذ طلبات إيصال القراءة دائمًا لأن:
- قد لا ينفّذ عميل البريد تلك الوظيفة.
- قد يكون لدى المستخدم النهائي هذه الوظيفة موقفة.
- قد يختار المستخدم النهائي عدم إرسالها.
تُظهر الفقرة البرمجية التالية كيفية طلب إيصال قراءة.
import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions
# Create an instance of MailMessage class
message = MailMessage()
# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS
message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")
# Create an instance of SmtpClient class
client = SmtpClient()
# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25
try:
# Client.send will send this message
client.send(message)
# Display 'Message sent' only if the message is sent successfully
print("Message sent")
except Exception as ex:
import traceback
traceback.print_exc()
ضبط رؤوس البريد الإلكتروني
رؤوس البريد الإلكتروني تمثل معيار إنترنت وتُعرّف RFC حقول الرؤوس التي تُدرج في رسائل البريد الإلكتروني على الإنترنت. يمكن تحديد رأس البريد باستخدام فئة MailMessage. تُعرف أنواع الرؤوس الشائعة في فئة HeaderType. إنها فئة مغلقة تعمل كعدد ثابت عادي.
عادةً ما يحتوي رأس البريد الإلكتروني على الحقول التالية:
- To: يمكن تحديد عناوين المستلمين في حقل To. هؤلاء المستلمين هم الجمهور الأساسي للرسالة. يمكن أن يكون هناك أكثر من عنوان مستلم.
- From: يُظهر هذا الحقل عنوان البريد الإلكتروني للمرسل.
- Cc: يتيح للمستخدمين إرسال رسالة كـ "نسخة كربونية" أو "نسخة مجاملة". أي أن المستقبل ليس مُتوقعًا أن يرد أو يتصرف. عادةً ما يتم إبلاغ الموظفين الإشرافيين عبر الـ CC.
- Bcc: تعني نسخة كربونية مخفية، وتشير إلى ممارسة إرسال رسالة إلى عدة مستلمين بحيث لا يحتوي ما يتلقونه على القائمة الكاملة للمستلمين. يُقصد به إشعار مخفي.
- 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 كائن.
تُظهر لك قطعة الكود التالية كيفية ضبط رؤوس البريد الإلكتروني.
import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime
# Create an instance of MailMessage class
message = MailMessage()
# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")
تنتج قطعة الكود أعلاه رأس بريد إلكتروني بالتنسيق التالي. يمكن ملاحظة ذلك بفتح الملف الناتج "MsgHeaders.msg" في Microsoft Outlook ثم عرض الخصائص.
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
secret-header: mystery
إدراج رأس في موقع محدد
الـ Add طريقة من HeadersCollection الفئة تُدخل الرأس في نهاية المجموعة. ومع ذلك، قد يكون من الضروري أحيانًا إدراج رأس في موقع محدد. في هذه الحالة، الـ Add الطريقة لن تكون مفيدة. لتحقيق ذلك، استخدم الـ Insert طريقة الـ HeadersCollection. إذا احتوت المجموعة على رؤوس بنفس الاسم، فسيتم إدراج هذا الرأس قبل الرؤوس الأخرى ذات الاسم نفسه.
تُظهر لك قطعة الكود التالية كيفية إدراج رأس في موقع محدد.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
إضافة رؤوس مخصصة إلى البريد الإلكتروني
تُظهر عينة البرمجة أدناه كيفية تحديد رأس مخصص في رسالة بريد إلكتروني باستخدام الـ MailMessage فئة.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
تنتج قطعة الكود أعلاه رأس بريد إلكتروني بالتنسيق التالي:
secret-header: mystery