لارافيل, Others / 2024-09-07

الـ Syntax الجديد لإرسال البريد الإلكتروني في لارافيل

الـ Syntax الجديد لإرسال البريد الإلكتروني في لارافيل

2024-09-07 وقت القراءه : 2 دقائق

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

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

لكن في 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"))
    ];
}


إضافة تعليق
Loading...