ایجاد و مدیریت ایمیل‌ها

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

این MailMessage کلاس نمایانگر یک پیام ایمیل است و به توسعه‌دهندگان اجازه می‌دهد پیام ایمیل جدیدی ایجاد کنند. ویژگی‌های پایه ایمیل مانند From، To، Subject و body می‌توانند به راحتی به پیام ایمیل جدید اضافه شوند. به طور مشابه می‌توانیم پیام ایمیل را در فرمت‌های مختلفی مانند EML، MSG و MHTML ذخیره کنیم.

  • یک نمونه از MailMessage کلاس.
  • ویژگی‌های پیام ایمیل را تنظیم کنید.
  • پیام ایمیل را در فرمت‌های مختلف ذخیره کنید.

قطعه کد زیر نشان می‌دهد چگونه یک ایمیل جدید با ویژگی‌های مختلف ایجاد کنید.

مشخص کردن چندین گیرنده

این MailMessage شی نمایانگر یک پیام ایمیل است. نمونه‌های MailMessage کلاس برای ساختن پیام‌های ایمیل که به سرور SMTP منتقل می‌شوند، با استفاده از SmtpClient کلاس. این مقاله نشان می‌دهد چگونه بیش از یک آدرس ایمیل را مشخص کنیم. آدرس‌های ایمیل می‌توانند با استفاده از MailMessage کلاس. آنها عبارتند از:

  • To - آدرس‌های گیرنده می‌توانند در فیلد ‘To’ مشخص شوند. گیرندگان فیلد ‘To’ مخاطبان اصلی پیام هستند. می‌توان بیش از یک آدرس گیرنده داشت.
  • Cc - CC مخفف «کپی کربن» یا «کپی Courtesy» است و به شما امکان می‌دهد گیرندگانی را اضافه کنید که نیاز به مشاهده ایمیل دارند اما لزوماً انتظار نمی‌رود اقدام کنند. برای مثال مدیران یا اعضای تیم شما که باید از گفت‌وگو آگاه باشند. با Aspose.Email، می‌توانید آدرس‌های CC را در کد خود مشخص کنید. به این ترتیب، ایمیل‌های خودکار یا تمام ایمیل‌ها به یک آدرس خاص می‌توانند به پرسنل مربوطه کپی شوند.
  • Bcc - Bcc مخفف کپی سیاه‌رنگ است و به شما اجازه می‌دهد ایمیلی به گیرنده‌ای بفرستید که از سایر گیرندگان پنهان باشد. در حالی که CC در اطلاعات ایمیل برای گیرندگان اصلی ظاهر می‌شود، Bcc نه. این برای اطلاع‌رسانی مخفی استفاده می‌شود. 

برای مشخص کردن چندین آدرس ایمیل در یک پیام ایمیل، مراحل زیر را دنبال کنید:

  1. یک نمونه از MailMessage کلاس.
  2. آدرس From و چندین آدرس To، Cc و Bcc را با استفاده از MailMessage نمونه.
  3. یک نمونه از 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 class محتوای یک پیام ایمیل را نمایش می‌دهد. نمونه‌های MailMessage class برای ساخت یک پیام ایمیل استفاده می‌شود که به سرور SMTP برای تحویل ارسال می‌شود با استفاده از SmtpClient class. این مقاله نشان می‌دهد چگونه از آن استفاده کنید MailMessage ویژگی‌های utility کلاس برای کنترل ویژگی‌های زیر ایمیل:

  • Date and time - از طریق MailMessage ویژگی class Date که برای دریافت یا تنظیم تاریخ و زمان ایمیل استفاده می‌شود.
  • اولویت پیام -  MailPriority کلاس سطوح اولویت برای ارسال پیام ایمیل را مشخص می‌کند. می‌تواند کم، معمولی یا بالا باشد. اولویت بر سرعت انتقال و تحویل تأثیر می‌گذارد.
  • حساسیت پیام -  MailSensitivity کلاس پنج سطح حساسیت را مشخص می‌کند.
  • اطلاع تحویل - اطلاعیه‌های تحویل به فرستندگان می‌گویند ایمیل‌های ارسال‌شده به صندوق ورودی دریافت‌کننده تحویل داده شده‌اند.

به طور پیش‌فرض، تاریخ برابر با تاریخ واقعی ارسال پیام است و زمان نیز زمان ارسال را نشان می‌دهد، همان‌طور که در 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())

درخواست رسید خواندن

نمونه‌های برنامه‌نویسی زیر نشان می‌دهند که چگونه می‌توانید درخواست رسید خواندن کنید. The MailMessage کلاس DeliveryNotificationOptions ویژگی Enumeration گزینه‌های اعلان تحویل ایمیل را توصیف می‌کند. برای درخواست دریافت خوانده شده پس از ارسال ایمیل، مراحل زیر را دنبال کنید:

  1. یک نمونه از MailMessage کلاس.
  2. آدرس فرستنده، گیرنده و بدنه HTML ایمیل را در MailMessage نمونه.
  3. مشخص کنید DeliveryNotificationOptions در سایر MailMessage نمونه‌ها.
  4. یک نمونه از 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 تعریف شده‌اند. این کلاس یک کلاس sealed است که مانند یک enumeration معمولی عمل می‌کند.

معمولاً یک هدر ایمیل شامل این فیلدها است:

  • To: آدرس‌های گیرندگان می‌توانند در فیلد To مشخص شوند. این گیرندگان مخاطبان اصلی پیام هستند. می‌توان بیش از یک آدرس گیرنده داشت.
  • From: این فیلד آدرس ایمیل فرستنده پیام را نشان می‌دهد.
  • Cc: به کاربران امکان می‌دهد پیام را به‌صورت "Carbon Copy" یا "Courtesy Copy" ارسال کنند. به‌عبارت دیگر، دریافت‌کننده انتظار پاسخ یا واکنش ندارد. معمولاً پرسنل نظارتی با CC مطلع می‌شوند.
  • Bcc: مخفف Blind Carbon Copy است و به ارسال پیام به چندین گیرنده به‌طوری که لیست کامل گیرندگان برای آنها قابل مشاهده نباشد، اشاره دارد. برای اطلاع‌رسانی مخفی استفاده می‌شود.
  • ReplyTo: این فیلد هدر برای نشان دادن مقصدی است که فرستنده می‌خواهد پاسخ‌ها به آن ارسال شوند.
  • Subject: عنوان، سرخط، موضوع. اغلب به‌ عنوان شاخص رشته (thread) برای پیام‌های پاسخ‌دهی یا نظردهی بر پیام‌های دیگر استفاده می‌شود.
  • 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