إرسال البريد الإلكتروني باستخدام Office 365 Direct Send و PowerShell

هل تعلم أنه يمكنك استخدام Office 365 لإرسال البريد الإلكتروني باستخدام PowerShell؟ في هذا المقال، ستتعلم كيفية إرسال البريد الإلكتروني باستخدام Office 365 Direct Send وأمر Send-MailMessage في PowerShell.

إذا كنت ترغب في فهم مفصل حول إرسال البريد الإلكتروني باستخدام PowerShell، تحقق من هذا البرنامج التعليمي الشامل حول Send-MailMessage.

إرسال مباشر من Office 365 مقابل إرسال العميل SMTP

قبل أن نتقدم كثيرًا في PowerShell، تعلم أنه ليس هناك طريقة واحدة فقط لإرسال البريد الإلكتروني من خلال Office 365 باستخدام PowerShell. لدى Office 365 طريقتان مدعومتان لإرسال البريد الإلكتروني. تلك الخيارات هي الإرسال المباشر و إرسال العميل SMTP أو إرسال المصادقة SMTP.

إرسال المصادقة SMTP

إرسال المصادقة SMTP هو الأسهل في الإعداد. ستختار هذا الخيار إذا كنت تخطط لإرسال رسائل البريد الإلكتروني من جهاز أو تطبيق إلى المستلمين داخل وخارج منظمتك. لا تتطلب هذه الخيارات أي إجراءات إضافية في Office 365 للسماح بذلك.

يسمح لك هذا الخيار باستخدام أي عنوان مرسل. ولكن يجب أن يكون العنوان من أحد النطاقات المقبولة التي تم التحقق منها لديك.

لاستخدام إرسال المصادقة SMTP، يجب عليك:

  • وجود صندوق بريد مستخدم Office 365 (مُرخص). سيظهر عنوان البريد الإلكتروني هذا كمرسل للرسالة.
  • يجب أن يتمكن PowerShell (أو عميل آخر) من حل والوصول إلى smtp.office365.com.
  • يجب أن يكون منفذ TCP 587 أو 25 مفتوحًا إلى Office 365 من العميل.

الإرسال المباشر

تصعيد التعقيد قليلاً هو الخيار Direct Send. مثل SMTP Authenticated Submission, يسمح Direct Send لك باستخدام أي عنوان مرسل. أيضًا، يجب أن يكون عنوان from من أحد النطاقات المقبولة والتي تم التحقق منها لديك.

الفارق الكبير بين Direct Send و SMTP Authenticated Submission هو عدم السماح بالمستلمين الخارجيين ل Direct Send.

Direct Send لديه بعض متطلباته/توصياته الخاصة:

  • ليس من الضروري أن يكون عنوان المرسل هذا صالحًا، ولكنه ضروري إذا كنت تخطط لاستقبال رسائل عدم التسليم أو الردود باستخدام هذا العنوان.
  • يجب أن يكون منفتحًا منفذ TCP Port 25 من جهاز العميل إلى Office 365.
  • يجب أن يكون الجهاز قادرًا على حل والوصول إلى عنوان نهاية MX الخاص بك (على سبيل المثال، yourdomain-com.mail.protection.outlook.com)
  • A static public IP address. This is to update your SPF record and avoid your messages getting flagged as spam (optional but recommended)

إذا لم تعرف كيفية العثور على عنوان نهاية MX الخاص بك، إليك دورة تعليمية سريعة:

  1. قم بتسجيل الدخول إلى Office 365 Admin Portal.
  2. انقر على Setup (1), حدد Domains (2), انقر على Domain name (3), انسخ عنوان MX Points to address or value (4).
Finding Office 365 MX Endpoint URL

SMTP Authenticated Submission

أول طريقة لإرسال البريد الإلكتروني هي عبر إرسال العميل SMTP أو إرسال مصادق عليه SMTP. باستخدام cmdlet Send-MailMessage في PowerShell، يمكننا توفير جميع المعلمات التي نحتاجها لإرسال البريد الإلكتروني من خلال Office 365.

أدناه مقتطف يمكنك استخدامه لإرسال البريد الإلكتروني عبر هذه الطريقة.

سيكون عليك أولاً تعريف كائن PowerShell PScredential ثم توفير جميع المعلمات التي يحتاجها Send-MailMessage.

# احصل على الاعتماد
$credential = Get-Credential

## حدد معلمات Send-MailMessage
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # أو '25' إذا كنت لا تستخدم TLS
    UseSSL                     = $true ## أو لا إذا كنت تستخدم غير TLS
    Credential                 = $credential
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## أرسل الرسالة
Send-MailMessage @mailParams

عند تشغيل الكود أعلاه، يجب أن تتلقى بريدًا إلكترونيًا يتم استقباله بواسطة المستلم الداخلي (yourdomain.com) والمجال الخارجي (notyourdomain.com).

Internal Email
External email

إرسال مباشر (مطلوب TLS)

مشابه لـ SMTP Authenticated Submission, يمكنك استخدام تقريبًا نفس المعلمات لـ Send-MailMessage. ومع ذلك، هذه المرة، ستكون المستلمات To داخلية فقط.

لاحظ أيضًا أنه لم يتم الحاجة إلى PSCredential.

## بناء المعلمات
$mailParams = @{
    SmtpServer                 = '<tenant>.mail.protection.outlook.com'
    Port                       = '25'
    UseSSL                     = $true   
    From                       = '[email protected]'
    To                         = '[email protected]'
    Subject                    = "Direct Send $(Get-Date -Format g)"
    Body                       = 'This is a test email using Direct Send'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## إرسال البريد الإلكتروني
Send-MailMessage @mailParams
Direct Send email

ملخص

يمكنك رؤية أن Office 365 توفر خيارين مختلفين لإرسال البريد الإلكتروني. في هذا المقال، استخدمنا PowerShell كمثال لتوضيح كل منهما. ولكن ليس عليك استخدام PowerShell. طالما تدعم تطبيقك أو لغة البرمجة الخاصة بك المصادقة بواسطة TLS، يمكنك استخدام أي طريقة تفضلها.

Further Reading

Source:
https://adamtheautomator.com/office-365-direct-send/