ارسال ايميل في Laravel
(الشرح التالي يستخدم النسخة 11 من لارافيل)
سيناريو العمل المتبع هو كالتالي:
ارسال ايميل للمستخدم يتضمن اسمه وايميله عند تعبئته form من حقلين هما الاسم والايميل
في البداية ستحتاج إلى إنشاء وتعديل 5 ملفات:
الملف الأول هو api.php ويتم توليده من خلال الأمر التالي:
في النسخ السابقة من لارافيل (V10 وما قبل) هذا الملف موجود بشكل افتراضي.
الملفين الثاني والثالث هما MailNotify.php و emailTemplate.blade.php ويتم توليدهما من خلال الأمر المشترك التالي:
MailNotify (ستجده داخل مجلد app > Mail)
emailTemplate (ستجده داخل مجلد resources > views)
أو يمكنك استخدام ملف HTML عادي بلاحقة blade.php بدل استخدام تنسيق markdown المعقد وذلك بازالة “--markdown=emailTemplate“ من الأمر, لكن ستحتاج الى الى انشاء الملف بنفسك داخل مجلد:
resources > views > emails.
الملف الرابع هو MailNotifyController.php ويتم توليده من خلال الأمر التالي:
(ستجده داخل مجلد app > Http > Controllers)
الملف الخامس هو env. وهذا الملف موجود بشكل مسبق لكن يحتاج الى بعض التعديلات
وستحتاج أيضا إلى حسابين Gmail للتجربة الأول مرسل والثاني مستقبل.
(في مرحلة الـ production الايميل المرسل سيكون ايميل الاستضافة ببيانات smtp الخاصة به)
البداية من حساب gmail المرسل, ادخل إلى إعدادات حساب جوجل ثم Security ثم 2-Step Verification قم بتفعيلها في حال لم تفعلها من قبل, ثم انزل الى اسفل الصفحة للوصول الى App passwords.
قم بإضافة اسم اختياري لتطبيقك Laravel على سبيل المثال ثم اضغط Create
ستظهر أمامك كلمة مرور قم بنسخها ولصقها في ملف env بين علامتي ' ' بالشكل والبيانات التالية:
(لا تنسى تعديل اسم التطبيق في أعلى ملف env كونه سيظهر في الايميل)
الخطوة التالية هي تعديل ملف MailNotify.php:
قم بإنشاء متغيرات ومن ثم مررها كـ بارمترات كما في الصورة, أيضا يمكنك تعديل عنوان الايميل وارفاق ملفات داخله من الملف ذاته واختيار ملف الـ template الذي تريده.
الخطوة التالية هي تعديل ملف الـ MailNotifyController:
ستحتاج إلى استيراد الملف الذي قمنا بإنشائه بالاضافة الى استيراد Mail ومن ثم إنشاء دالة الارسال
الخطوة الأخيرة هي تعديل ملف api.php:
هنا كل ما ستحتاجه هو اضافة route جديد من النوع post لأننا نرسل اسم المستخدم والايميل من front-end الى back-end, ولا تنسى استيراد الكنترولر:
في حال واجهت مشاكل قم بإعادة إنشاء تطبيق جديد بكلمة مرور جديدة (App password) من حسابك على جوجل
رابط github: هنا