تحدثنا في مقال سابق عن كيفية إرسال بريد إلكتروني بإستخدام إطار العمل لارافيل، حيث إنه بعد تنفيذ الأمر
php artisan make:mail SendEail --markdown=emails.sendEmail
يتم إنشاء Mailable cLASS بإسم SendEmail في المسار app/Mail/SendEmail.php وهو الكلاس المسؤول عن إرسال البريد الإلكتروني. وكذلك يتم إنشاء ملف blade بإسم sendEmail.blade.php في المسار resources/views/emails/sendEmail .
public function build(){ return $this->from('ethartest@gmail.com','Ethar') ->subject('New Customer') ->view('emails.sendEmail') ->attach(storage_path("app/orders/order-001.pdf")); }
بداخل الكلاس SendEmail يتم إنشاء الدالة build وبداخلها نقوم بتحديد العنوان والمرسل وكذلك محتوى الإميل وإرجاع ملف blade وعرض محتويات البريد الإلكتروني.
لكن في laravel 9.35 فإنه تم فإنه عوضا عن الدالة build التي يتم إنشاؤها في الكلاس sendEmail فإنه يتم إنشاء 3 دوال وهي :
<?php class SendEmail extends Mailable { use Queueable, SerializesModels; public function __construct() { // } public function envelope() { return new Envelope( subject: 'Send Email', ); } public function content() { return new Content( markdown: 'emails.sendEmail', ); } public function attachments() { return []; } }
بداخل الدالة envelope نحدد العنوان والمرسل
public function envelope() { return new Envelope( from: new Address('ethartest@gmail.com'), subject: 'New Customer', ); }
وفي الدالة content نقوم بإرجال ملف blade ومحتويات البريد الإلكتروني
public function content() { return new Content( markdown: 'emails.sendEmail', ); }
وفي الدالة attachments حيث إذا كان البريد الإلكتروني يحتوي على مرفقات نحدد مصفوفة من المرفقات.
public function attachments() { return [ Attachment::fromPath(storage_path("app/orders/order-001.pdf")) ]; }