مقدمة :
يوفر لارافيل بيئة إرسال بريد إلكتروني مميزة وسهلة جداً عبر إضافة Symfony Mailer , حيث يوفران محركات لإرسال الإيميلات
عبر البريد الداخلي الخاص بالاستضافة أو بريد Gmail بواسطة SMTP , أو عبر مزودات أخرى مثل :
Mailgun, Postmark, Amazon SES , و سأشرح في هذا المقال كيفية إرسال بريد الكتروني بواسطة SMTP :
لماذا أتعلم إرسال إيميل بواسطة لارافيل :
كمطور و عند تطويرك لأي مشروع سيطلب منك تضمين خدمات البريد الإلكتروني ضمن المشروع , مثلاً في حالة المتجر الإلكتروني , يجب إرسال إيميل للمستخدم باستلام الطلب أو بعرض خاص على بضاعة معينة ,
أو في حالة تطويرك لمدونة سيطلب منك خدمة Newsletter ( الرسائل البريدية ) حيث يصل للمستخدمين رسائل بجديد المدونة والكتير .....
إذاً كيف أبداً :
من ملف .env سيتوجب عليك تعديل الإعدادات بما يتناسب مع المحرك الذي تريد من خلاله إرسال البريد الالكتروني , كالتالي :
MAIL_DRIVER = smtp
// وتعني محرك البريد الالكتروني ( أو الطريقة التي سيتم من خلالها إرسال البريد )
MAIL_HOST = smtp.gmail.com
// إستضافة البريد الالكتروني -قد تستخدم استضافتك الخاصة من خلال حصولك على إعدادات ا لبريد
MAIL_PORT = 587
// منفذ إرسال البريد الالكتروني
MAIL_USERNAME = اسم المستخدم الخاص بالبريد الالكتروني
MAIL_PASSWORD = كلمة المرور
MAIL_ENCRYPTION = tls
// صيغة التشفير الخاص بالإيميل مثلاً قد تكون (tls أو ssl)
سيتوجب عليك بعدها تنفيذ الأمر التالي , لتأخذ التعديلات التي أجريتها على ملف .env مكانها في config/mail.php
php artisan config:cache
معلومات هامة يجب أن تعرفها عن دالة الإرسال :
يتم إرسال الإيميل عبر Mail Facade
الشكل الأساسي لدالة الإرسال هي على الشكل التالي :
Mail::send($view, $data, $callback);
وهي تستعمل ثلاث بارمترات :
$view : متغير نصي أو مصفوفة تعبر عن ملف view الذي يحوي الرسالة .
$data : البيانات التي تريد تمريرها لملف view أعلاه .
$callback : عبارة عن دالة تحوي متغيرات خاصة بالإيميل ( كإسم المرسل و المستلم و الموضوع و النسخة الإضافية الخ.... )
البدء بإرسال البريد الالكتروني :
سننشئ أولاً ملف view بداخله الرسالة المطلوب إرسالها , وذلك داخل resource/views وسنسميه على سبيل المثال : mymail.blade.php
ونضغ داخله نص الرسالة مع أي بيانات إخرى نرغب بتمريرها على الشكل التالي :
Hi {{$name}} , this is a test message
سننشئ ملف controller لنقوم من خلاله باستدعاء الدالة السابقة , عن طريق أمر artisan التالي :
php artisan make:controller MailController
ونكتب داخله دالة لإرسال البريد الإلكتروني :
public function sendmail() {
$data = array('name'=>"Husam");
Mail::send('mymail', $data, function($message) {
$message->to('[email protected]')->subject
('Laravel Test Sending Mail');
$message->from('[email protected]','Husam Hammad');
});
return "Email Sent Success ";
}
كما ننشى مسار في ملف routes/web.php لإرسال البريد :
Route::get('/send-test-mail', [MailController::class,'sendmail']);
وعند الذهاب لمسار send-test-mail على المتصفح سيرسل الإيميل و سيظهر لنا نص : Email Sent Success
إذاً انتهينا من إرسال البريد . ما التالي ؟ :
في المثال السابق تعرفنا على كيفية إرسال بريد الكتروني بسيط , لكن كمطور لارافيل يحب عليك التعرف إلى خصائص البريد المتقدمة
مثل استخدام قوالب Markdown الجاهزة و إرسال البريد الالكتروني في الخلفية أو ضمن طابور ,
وهذا ما سنتعرف إليه في مقالات قادمة , أو يمكنك التعرف إليه عبر Laravel Docs بشكل مباشر
المراجع :