مايكروسوفت أزور ليس لديها خدمة تسليم البريد الإلكتروني. سواء كنت تقوم باختبار التطبيقات أو تطوير البرامج النصية في أزور لإرسال رسائل البريد الإلكتروني، فتأكد من عدم توفر خدمة بريد إلكتروني أصلية لك.
كما أن اتصال SMTP الصادر عبر المنفذ 25 محظور تمامًا في أزور. إذا كنت عميلًا لشركة مؤسسة، فيمكنك طلب فتح المنفذ 25 لحساب أزور الخاص بك. وإلا، كيف يمكنك إرسال رسائل البريد الإلكتروني من أزور؟
هناك عادة طريقتين للسماح بإرسال رسائل البريد الإلكتروني من أزور؛ استخدام خادم بريد إلكتروني ذكي SMTP وطلبات واجهة برمجة التطبيقات (API) REST. يقدم معظم خدمات تسليم البريد الإلكتروني كل من طريقتي SMTP و API لإرسال رسائل البريد الإلكتروني. في هذه المقالة، ستتعلم كيفية إرسال رسائل البريد الإلكتروني من أزور إلى بقية العالم.
المتطلبات الأساسية
هذه المقالة هي دليل كيفية، وإذا كنت تخطط لمتابعة الأمثلة بما يتقدم، فيجب عليك توفير بعض المتطلبات.
- إشتراك في أزور. يمكنك التسجيل للحصول على إشتراك مجاني في أزور إذا لم يكن لديك حساب بعد.
- آلة افتراضية Azure (VM). راجع إرشادات إنشاء آلة افتراضية لنظام التشغيل Windows في بوابة Azure لمعرفة كيفية إنشاء آلة افتراضية جديدة إذا لم يكن لديك واحدة بعد.
- Windows PowerShell 5.1 أو PowerShell 7.1.
- A valid sender email address. Using a free email address domain, such as gmail.com, is not recommended. As much as possible, use a sender email address that uses a domain that you own.
معرفة أي خدمات البريد الإلكتروني المستخدمة مع Azure لإرسال الرسائل البريدية
هناك العديد من خدمات البريد الإلكتروني السحابية المتاحة للاستخدام. بعض الأسماء البارزة هي SendGrid، MailJet، و MailGun. بغض النظر عن الخدمة التي تختارها، فإن استخدامها لإرسال رسائل البريد الإلكتروني من Azure مشابه؛ عنوان الخادم والمنفذ لبروتوكول SMTP وعنوان نقطة نهاية واجهة برمجة التطبيق لبروتوكول REST.
SendGrid هو مثال على خدمة بريد إلكتروني من جهة ثالثة تستخدم في هذه المقالة. وتستخدم خدمات البريد الإلكتروني الإضافية كأمثلة هي إعادة توجيه SMTP في Office 365 وواجهة برمجة التطبيق Microsoft Graph.
ذات الصلة: أي خدمة بريد إلكتروني Azure تختار لعام 2021
استخدام SendGrid
SendGrid هي عبارة عن أكثر خيارات خدمة البريد الإلكتروني شهرة لإرسال رسائل البريد الإلكتروني من Azure. تعتبر Azure و SendGrid شهيرتين بسبب وجود خطة مجانية سابقًا تتيح لعملاء Azure إرسال 25,000 رسالة بريد إلكتروني في الشهر.
على الرغم من أن الخطة المجانية لم تعد متاحة في بوابة Azure، كما أكدته مايكروسوفت، فمن الممكن الاشتراك في اشتراك مجاني يتيح 100 رسالة بريد إلكتروني يوميًا. بعد ذلك، ستتمكن من الوصول إلى خدمة إعادة توجيه SMTP أو واجهة برمجة التطبيق للبريد الإلكتروني التابعة لـ SendGrid لإرسال رسائل البريد الإلكتروني من تطبيق أو آلة افتراضية Azure.
إنشاء حساب SendGrid
يتطلب استخدام خدمات SendGrid أن يكون لديك حساب SendGrid أولاً. انتقل إلى صفحة الاشتراك، ويجب أن ترى النموذج كما هو موضح أدناه. أدخل عنوان بريدك الإلكتروني وكلمة المرور التي اخترتها. ثم، قبل الشروط وانقر على زر إنشاء حساب.

في الصفحة التالية، تحتاج إلى إدخال اسمك ومعلومات الشركة. كما يجب عليك اختيار الخيارات المناسبة مثل دورك وعدد الرسائل التي سترسلها في الشهر وعدد الموظفين. ثم، انقر على ابدأ الآن.

عند تسجيل الدخول الأول إلى SendGrid ، قد تحصل على خطأ يقول “ليس لديك الصلاحية للوصول إلى SendGrid ؛ يرجى الاتصال بالدعم”. عند حدوث ذلك ، افتح تذكرة مع دعم SendGrid. قد يحتاجون إلى طرح بعض الأسئلة للتحقق قبل أن يقوموا بفتح الوصول الخاص بك.
سيُطلب منك تمكين المصادقة الثنائية أثناء تسجيل الدخول الأول. تأكد من اتباع التعليمات بدقة.
إنشاء هوية مرسل SendGrid
بعد إنشاء حساب SendGrid ، يأتي الخطوة التالية وهي تفويض هوية المرسل. هناك خياران ؛ مصادقة مرسل واحد (على سبيل المثال ، [email protected]) أو مصادقة النطاق بأكمله (على سبيل المثال ، domain.com).
في هذا المثال ، ستقوم بإنشاء هوية مرسل واحدة ستكون عنوان مرسلك. سيتم السماح فقط لعنوان المرسل الموثق بإرسال رسائل عبر خدمة SendGrid. اتبع التعليمات أدناه لإنشاء هوية المرسل الواحدة.
- على صفحة الصفحة الرئيسية ، انقر على زر إنشاء مرسل واحد.

2. بعد ذلك ، على الشريط الجانبي إنشاء مرسل ، قم بتقديم جميع المعلومات المطلوبة. تم وضع علامة * الحمراء بجوار الحقول المطلوبة لسهولة الإشارة إليها. بعد إدخال التفاصيل ، انقر على إنشاء.

سوف ترى بعد ذلك عنوان المرسل الجديد المدرج تحت صفحة التحقق من المرسل الفردي. كما يمكن رؤية من المثال أدناه، لم يتم التحقق من العنوان بعد، كما يشير ذلك بوجود علامة X حمراء تحت عمود مؤكد.

3. للتحقق من المرسل، اعثر على البريد الإلكتروني المُرسَل إلى عنوان المُرسِل، مشابهًا للصورة الملتقطة أدناه. ثم، انقر على زر التحقق من المرسل الفردي.

سيتم التحقق من عنوان المرسل. يجب أن ترى صفحة مماثلة، كما هو موضح أدناه، تؤكد أن التحقق من المرسل قد اكتمل.

إنشاء مفتاح API SendGrid
بعد إنشاء عنوان المرسل الفردي، يصبح واجهة إنشاء مفاتيح واجهة برمجة التطبيق (API) SendGrid متاحة. اعتبر مفتاح واجهة برمجة التطبيق SendGrid ككلمة المرور. بدونه، لن يتمكن الكود الخاص بك من المصادقة على خدمة إعادة إرسال SMTP لـ SendGrid. اتبع الخطوات التالية لإنشاء مفتاح API جديد.
- في القائمة الموجودة على الجانب الأيسر، انقر على الإعدادات > مفاتيح واجهة برمجة التطبيق (API). ثم، انقر على زر إنشاء مفتاح واجهة برمجة التطبيق (API) الموجود في الزاوية العلوية اليمنى من الصفحة.

2. يظهر القائمة المنبثقة إنشاء مفتاح واجهة برمجة التطبيق (API). أدخل اسم المفتاح الذي تقوم بإنشائه. استخدم اسمًا منطقيًا، مثل “مفتاح اختبار Azure.” بعد ذلك، لأسباب بساطة، حدد الوصول الكامل كإذن. وأخيرًا، انقر على زر إنشاء وعرض.

3. يتم عرض المفتاح الجديد للواجهة بعد ذلك. الآن انسخ القيمة المفتاح واحفظها لأنها لن تظهر لك مرة أخرى. بعد نسخ المفتاح، انقر على تم.

إرسال بريد إلكتروني من Azure باستخدام خدمة إعادة إرسال SMTP لـ SendGrid
الآن لديك المكونات المطلوبة (الحساب والمُرسِل والمفتاح) لاستخدام SendGrid لإرسال رسائل البريد الإلكتروني من Azure. حان الوقت لاختبار ما إذا كانت خدمة إعادة توجيه SMTP لـ SendGrid تعمل. في هذا القسم، ستستخدم PowerShell لإرسال رسائل البريد الإلكتروني من Azure VM.
قبل تشغيل أي كود، يجب عليك معرفة هذه المتطلبات.
- عنوان خادم SMTP لـ SendGrid هو smtp.sendgrid.net.
- اسم المستخدم المستخدم للمصادقة عبر SMTP هو دائمًا apikey.
- كلمة المرور المستخدمة هي قيمة المفتاح الخاص بك الذي تم إنشاؤه في SendGrid.
- لا تستخدم المنفذ 25. استخدم المنفذ 587 بدلاً من ذلك.
- فقط عنوان المُرسِل الموثق في SendGrid هو صالح للاستخدام كمُرسِل لرسائل البريد الإلكتروني الخاصة بك. في هذا المثال، المُرسِل المُصرَّح به هو [email protected].
السكريبت أدناه سيُرسِل رسالة بريد إلكتروني من خلال إعادة توجيه SMTP لـ SendGrid. انسخ الكود أدناه وقم بتغيير قيم $sendGridApiKey
و From
و To
و Body
. ثم قم بتشغيل الكود في جلسة PowerShell الخاصة بك. راجع التعليقات لفهم ما يقوم به كل سطر من الكود.
العرض التوضيحي أدناه يوضح كيف يبدو تشغيل الشيفرة أعلاه في PowerShell في الوقت الحقيقي.

للتأكد من إمكانية تسليم البريد الإلكتروني ، تحقق من صندوق البريد الوارد للمستلم للعثور على الرسالة التجريبية التي أرسلتها. ستكون النتيجة مشابهة للتي يتم عرضها أدناه. كما يمكنك أن ترى ، جاءت الرسالة من عنوان المرسل عبر sendgrid.net.

ذات صلة: إرسال البريد الإلكتروني: الطريقة في PowerShell لإرسال البريد الإلكتروني
إرسال بريد إلكتروني من خلال Azure باستخدام واجهة برمجة التطبيق SendGrid
طريقة أخرى لاستخدام SendGrid مع Azure لإرسال رسائل البريد الإلكتروني هي باستخدام واجهة برمجة التطبيق SendGrid Web V3. بدلاً من التواصل مع SendGrid عبر SMTP ، يتم التواصل باستخدام الواجهة البرمجية بواسطة HTTP. يتم إرسال طلب HTTP إلى عنوان URL النقطة النهائية لواجهة برمجة التطبيق SendGrid.
النص المثالي PowerShell أدناه يستخدم cmdlet Invoke-RestMethod
لإرسال طلب البريد الإلكتروني من Azure إلى SendGrid. قم بنسخ الكود وتغيير قيم المتغيرات $sendGridApiKey
و $fromAddress
و $toAddress
و $mailSubject
و $mailMessage
.
عند الانتهاء من تحديث المتغيرات، قم بتشغيل الكود في PowerShell.
بعد تشغيل الكود PowerShell أعلاه، تحقق من صندوق البريد الوارد للمستلم وتأكد من استلام الرسالة التجريبية. يُظهر المثال أدناه رسالة تجريبية ناجحة تم تسليمها بنجاح من Azure عبر واجهة برمجة التطبيقات لـ SendGrid.

إذا كنت ترغب في معرفة المزيد حول واجهة برمجة التطبيقات الويب لـ SendGrid، قم بزيارة الصفحة V3 Mail Send API.
استخدام مصادقة Office 365 SMTP
خيار آخر لإرسال رسائل البريد الإلكتروني من Azure هو استخدام نقطة اتصال SMTP لـ Office 365. هذا إذا كانت لمؤسستك اشتراكًا في Exchange Online بالفعل. تشير الطريقة نفسها لاستخدام SendGrid كمضيف ذكي لخادم SMTP إلى أن النقطة الأساسية لـ Office 365 SMTP تتطلب المصادقة واستخدام المنفذ 587 فقط.
قبل استخدام نقطة اتصال Office 365 SMTP ، يجب أن تعرف الشروط التالية لجعلها تعمل.
- يجب أن يكون عنوان المرسل كائن صحيح للمستلم في Exchange Online مثل صندوق بريد أو مستخدم بريد. ولكن إذا كان من المقرر تخزين إشعارات عدم التسليم (NDR)، استخدم صندوق بريد بدلاً من ذلك.
- يجب أن يكون لدى المستخدم الموثق ترخيصًا صحيحًا لـ Exchange Online. يُسمح فقط للمستخدمين المرخص لهم في Exchange Online باستخدام نقطة اتصال Office 365 SMTP.
- نفترض أن المستخدم المصادق عليه مختلف عن المرسل. في هذه الحالة، يجب تعيين صلاحية الإرسال كـ “إرسال بصفة” إلى حساب المرسل.
- طريقة المصادقة المستخدمة هي الأساسية (التراثية). وهذا يعني أنه إذا تم تعطيل مصادقة SMTP الأساسية في منظمتك أو عندما يتوقف مايكروسوفت عن دعم المصادقة الأساسية، فإن SMTP Auth لن يعمل بعد ذلك.
- عنوان خادم إعادة الإرسال SMTP هو smtp.office365.com، ورقم المنفذ هو 587.
ذات الصلة: كيفية إرسال البريد الإلكتروني باستخدام Office 365 Direct Send و PowerShell
إنشاء عنوان مرسل في Office 365
في هذا المثال، المرسل والمستخدم المصادق عليه مفصولان. تأكد من الاتصال بـ Exchange Online PowerShell أولاً. بمجرد الاتصال، اتبع الخطوات أدناه.
أنشئ صندوق بريد مشترك باستخدام الأمر أدناه. غير قيمتي -Name
و -PrimarySMTPAddress
إلى القيم الصحيحة الخاصة بك.
يجب أن يتم إنشاء صندوق البريد المشترك ويجب أن يتم إرجاع نتيجة مشابهة للنتيجة المعروضة أدناه.

ثم، قم بتعيين إذن إرسال كـ للمستخدم المصادق عليه. في المثال أدناه، يتم تعيين إذن إرسال كـ للبريد الإلكتروني المشترك.
بمجرد تنفيذ الأمر أعلاه، يجب أن تحصل على نتيجة مشابهة للمثال أدناه.

إرسال بريد إلكتروني من Azure باستخدام Office 365 SMTP Relay
بعد إنشاء عنوان المُرسِل وتعيين إذن “إرسال كـ”، الخطوة التالية هي اختبار تسليم البريد الإلكتروني باستخدام PowerShell و Office 365 SMTP relay.
يقوم الكود أدناه بالمصادقة باستخدام [email protected]. يظهر العنوان [email protected] كمُرسِل. تأكد من تعيين القيم الصحيحة قبل تشغيل الكود.
عند كتابة الاعتمادات بصورة نصية في السيناريوهات ، لا يُنصح بهذا. يجب أن تستخدم السيناريوهات الإنتاجية تشفير الاعتمادات أو إدارة الأسرار لتأمين اسم المستخدم وكلمة المرور.
حان الوقت الآن لفحص صندوق بريد المستلم. تحقق من استلام الرسالة التجريبية.

استخدام واجهة برمجة تطبيقات Microsoft Graph لإرسال بريد إلكتروني من Azure
بدلاً من استخدام إعادة توجيه SMTP في Office 365 ، الطريقة الأكثر أمانًا والأكثر توصية هي استخدام واجهة برمجة تطبيقات Microsoft Graph. باستخدام واجهة برمجة تطبيقات Microsoft Graph ، يمكنك إرسال رسائل البريد الإلكتروني من أي صندوق بريد في المؤسسة باستخدام استدعاءات واجهة برمجة تطبيقات REST.
لاستخدام واجهة برمجة تطبيقات Microsoft Graph لإرسال رسائل البريد الإلكتروني ، يتطلب تطبيق Azure AD المسجل تسجيل. يجب تعيين التطبيق المسجل بإذن واجهة برمجة التطبيق Mail.Send. ستوضح الأقسام التالية لك كيفية تكوين واجهة برمجة تطبيقات Microsoft Graph واستخدامها لإرسال رسائل البريد الإلكتروني.
ذات الصلة: استخدام واجهة برمجة تطبيقات Microsoft Graph مع PowerShell
تسجيل تطبيق جديد في Azure Active Directory
في هذا القسم ، ستقوم بتسجيل تطبيق ويب جديد في دليل Azure النشط. يعمل التطبيق الجديد كهوية المصادقة لـ Microsoft Graph. قم بتسجيل الدخول إلى بوابة Azure إذا لم تكن قد سجلت الدخول بعد.
- انتقل إلى الدليل النشط في Azure -> تسجيل التطبيقات. ثم ، انقر فوق الزر تسجيل جديد.

2. في صفحة تسجيل تطبيق ، أدخل اسم التطبيق.
3. تحت أنواع الحسابات المدعومة، اختر الحسابات في هذا الدليل التنظيمي فقط. اكتب HTTP://localhost كـ معرف إعادة التوجيه. أخيرًا، انقر على زر التسجيل.

4. انتظر اكتمال عملية التسجيل. يستغرق الأمر بضع ثوانٍ فقط. لا تنسى أن تحتفظ بقيم معرف التطبيق (العميل) و معرف الدليل (المستأجر)، ستحتاج إليهما لاحقًا.

إنشاء مفتاح سري للعميل
فكر في معرف التطبيق الذي قمت بإنشائه في الجزء السابق كاسم المستخدم. وهذا المعرف بحاجة إلى كلمة مرور – وهي المفتاح السري.
لإضافة مفتاح سري جديد للتطبيق، اتبع الخطوات التالية.
- اذهب إلى الشهادات والأسرار، ثم انقر على مفتاح عميل جديد.
- أدخل الوصف للمفتاح السري العميل، مثل المفتاح1.
- حدد متى ينتهي صلاحية المفتاح السري وانقر على إضافة. في المثال أدناه، ينتهي المفتاح السري بعد عام واحد.

سترى المفتاح الجديد مدرجًا تحت قسم أسرار العميل. الآن هو الوقت الوحيد الذي سترى فيه قيمة المفتاح، لذا احفظ نسخة.

تعيين إذن واجهة برمجة التطبيق ومنح موافقة المسؤول
الآن بعد أن قمت بإنشاء معرف التطبيق والمفتاح السري، ما تبقى هو تعيين إذن واجهة برمجة التطبيق Microsoft Graph اللازمة. بدون تعيين الإذن، يمكن للتطبيق المصادقة ولكنه لن يمتلك السلطة للقيام بأي شيء، مثل إرسال رسائل البريد الإلكتروني.
لبدء تعيين الإذن، اتبع الخطوات التالية.
- انقر على أذونات واجهة برمجة التطبيقات في القائمة الجانبية اليسرى.
2. ثم، تحت صفحة أذونات تم تكوينها، انقر على زر إضافة أذن.

3. في القائمة المنبثقة طلب أذونات واجهة برمجة التطبيقات، انقر لتحديد واجهة برمجة Microsoft Graph.

4. عندما يُطلب منك اختيار نوع الإذن المطلوب من التطبيق، انقر على أذونات التطبيق.
5. في مربع البحث، اكتب Mail.Send للبحث عنه. في النتيجة، انقر لتحديد إذن Mail.Send. أخيرًا، انقر على إضافة الأذونات.

6. ستلاحظ أن حالة الإذن هي “غير ممنوح لـ <اسم المؤسسة>.” في هذه النقطة، يجب على أنت أو المسؤول العام أولاً منح الموافقة على التطبيق. لمنح الإذن، انقر على زر منح موافقة المسؤول لـ <المؤسسة>.

ثم يتغير حالة إذن واجهة برمجة التطبيقات إلى “ممنوح لـ <اسم المؤسسة>” .

الحصول على رمز الوصول
يتطلب إرسال الطلبات إلى واجهة برمجة Microsoft Graph رمز الوصول. في هذه النقطة، لديك بالفعل معرف التطبيق الخاص بك ومفتاح السر الخاص بك ومعرف المستأجر. هذه القطع الثلاثة من المعلومات هي ما يلزم للحصول على رمز الوصول.
البرنامج النصي PowerShell أدناه يرسل طلب رمز الوصول إلى نقطة نهاية واجهة برمجة Microsoft Graph. يجب عليك تحديث $client_id
و $client_secret
و $tenant_id
بالقيم الصحيحة الخاصة بك أولاً. ثم، قم بنسخ ولصق الكود في PowerShell لطلب رمز الوصول.
العرض التوضيحي أدناه يوضح البرنامج النصي PowerShell أعلاه في العمل. لاحظ أن رمز الوصول المطلوب يتم تخزينه في المتغير $token
.

رموز الوصول صالحة لمدة ساعة واحدة فقط من الوقت الذي تم الحصول عليه فيه. ستحتاج إلى طلب رمز وصول آخر بعد انتهاء صلاحية الرمز السابق.
إرسال بريد إلكتروني من Azure باستخدام واجهة برمجة التطبيقات الخاصة بـ Microsoft Graph
أنت الآن جاهز لاستخدام واجهة برمجة التطبيقات الخاصة بـ Microsoft Graph مع Azure لـ
# قدم عنوان البريد الإلكتروني للمُرسِل والمستلم
$fromAddress = 'SENDER ADDRESS HERE'
$toAddress = 'RECIPIENT ADDRESS HERE'
# حدد موضوع البريد الإلكتروني والرسالة
$mailSubject = 'This is a test message from Azure via Microsoft Graph API'
$mailMessage = 'This is a test message from Azure via Microsoft Graph API'
# لا تقم بتغيير أي شيء أدناه هذا السطر
# قم ببناء طلب واجهة برمجة التطبيق Microsoft Graph
$params = @{
"URI" = "https://graph.microsoft.com/v1.0/users/$fromAddress/sendMail"
"Headers" = @{
"Authorization" = ("Bearer {0}" -F $token)
}
"Method" = "POST"
"ContentType" = 'application/json'
"Body" = (@{
"message" = @{
"subject" = $mailSubject
"body" = @{
"contentType" = 'Text'
"content" = $mailMessage
}
"toRecipients" = @(
@{
"emailAddress" = @{
"address" = $toAddress
}
}
)
}
}) | ConvertTo-JSON -Depth 10
}
# أرسل الرسالة
Invoke-RestMethod @params -Verbose