لارافيل, Others / 2024-11-21

كيفية إرسال بريد إلكتروني في لارافيل بإستخدام Markdown Template و بإسم النطاق الخاص بك

كيفية إرسال بريد إلكتروني في لارافيل بإستخدام Markdown Template و بإسم النطاق الخاص بك

2024-11-21 وقت القراءه : 5 دقائق

إرسال الرسائل في لارافيل 8 ليس بالأمر المعقد، بالأخص إذا كنا نستخدم markdown لتنسيق شكل البريد المرسل، في هذه المقالة سنمضي خطوه بخطوه عن كيفية إرسال البريد الإلكتروني وإستخدام قوالب markdown.

كي يتم إرسال البريد الإلكتروني فإننا بحاجة لأحد مزودي خدمة إرسال البريد الإلكتروني ولحسن الحظ توفر لارافيل مجموعة من الخيارات مثل Mailtrap, Mailgun.......


لفرض أن لدي الفورم التالي لإرسال الرسائل

 

يتم التعامل مع الفورم أعلاه مثله مثل أي فورم إعتيادي في لارافيل، حيث يجب إنشاء route و method في الكونترولر

Route::post('/send', [EmailController::class,'send'])->name('send');
public function send(Request $request){
    $email['email_title'] = $request->email_title;
    $email['email_body'] = $request->email_body;

    Mail::to($request->email_to)
        ->send(new SendEmail($email));
}

نلاحظ في الكورنترولر إننا إستخدمنا دالة Mail ، وتم تمرير لها المرسل له، لكن السؤال ما هي new SendEmail؟


من أجل إرسال بريد إلكتروني في لارفيل ٨ وإستخدام markdown، فإننا بحاجة إلى two services وهما:-

  1. Mailable Class: وهو الكلاس المسؤول عن إرسال البريد الإلكتروني.
  2. Markdown mailable: حيث يتيح لنا إستخدام قوالب معده مسبقا لشكل البريد المرسل.


إنشاء Markdown Template و Mailable Class

يمكن إنشاء mailable class  مع markdown template بإستخدام الأمر التالي

php artisan make:mail SendEail --markdown=emails.sendEmail

بعد تنفيذ الأمر، سيتم إنشاء ما يلي :

  • Mailable Class باسم SendEmail في المسار app/Mail/SendEmail.php وهو الكلاس المسؤول عن إرسال البريد الإلكتروني.
  • ملف blade يإسم sendEmail.blade.php  في المسار resources/views/emails/sendEmail ، حيث نستطيع وضع التنسيقات التي نريد إرسال البريد الإلكتروني بها.
class SendEail extends Mailable
{
    use Queueable, SerializesModels;
    public function __construct()
    {
        //
    }

    public function build()
    {
        return $this->markdown('emails.sendEmail');
    }
}
@component('mail::message')
# Introduction

The body of your message.

@component('mail::button', ['url' => ''])
Button Text
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent


كما نلاحظ في الكلاس SendEmail أنه يحتوي على constructor و دالة build وهي التي ترجع لنا الملف sendEmail.blade.php الذي يحتوي على التنسيقات.

الأن نريد تمرير المتغيرات (أسماء الحقول)، إلى هذه الدالة


class SendEmail extends Mailable
{
    use Queueable, SerializesModels;
    public $email;
    public function __construct($email)
    {
        $this->email=$email;
    }

    public function build()
    {
        $subject=$this->email['email_title'];
        return $this->markdown('emails.sendEmail')
            ->subject($subject)
            ->with([
                'email'=>$this->email
            ]);
        return $this->markdown('emails.sendEmail');
    }
}

إستقبال المتغيرات في ملف blade

@component('mail::message')
# {{ $email['email_title'] }}

{{ $email['email_body'] }}

Thanks,<br>
{{ config('app.name') }}
@endcomponent

كما نشاهد بالأعلى أنه يمكننا إزالة بعض العناصر من markdown template وكذلك إضافة بعض الخواص التي سيتم شرحها لاحقا.


تعريف أحد خدمات مزود البريد الإلكتروني بداخل التطبيق حتى يتم إرسال الرسائل


إستخدام خدمة Gmail SMTP

بداية يجب الذهاب إلى الحساب الذي سيتم الإرسال منه وتعطيل بعض إعدادات الأمان وهي:

  • التحقق بخطوتين يجب التأكد أنها معطلة.
  • تفعيل وصول التطبيقات الأقل أماناً. Less secure app access.

 

الذهاب لملف .env وتسجيل إعدادات إرسال البريد الإلكتروني عن طريق Gmail SMTP

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=ethartest@gmail.com
MAIL_PASSWORD=your_gmail_password_here
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}" 

كذلك لا ننسى تعديل قيمة APP_NAME هنا سأقوم بتغييرها من Laravel إلى EtharShrouf

الأن بإمكاننا إرسال رسائل البريد الإلكتروني بإستخدام خدمة جوجل smtp.


إرسال رسائل البريد الإلكتروني بإسم موقعك/شركتك من خلال معلومات cpanel

  • إنشاء بريد إلكتروني من خلال cpanel فبعد تسجيل الدخول يجب الذهاب إلى Email Account وإنشاء بريد جديد هنا سأسجل help@etharshrouf.com.
  • بعد تسجيل البريد يتم إدراجة في قائمة Email Accounts نضغط على Connected Device من أجل الحصول على المعلومات

  • نسجل هذه المعلومات في ملف .env
MAIL_MAILER=smtp
MAIL_HOST=mail.etharshrouf.com
MAIL_PORT=465
MAIL_USERNAME=help@etharshrouf.com
MAIL_PASSWORD=21520000@1212
MAIL_ENCRYPTION=SSL
MAIL_FROM_ADDRESS=help@etharshrouf.com
MAIL_FROM_NAME="${APP_NAME}"

كذلك لا ننسى تعديل قيمة APP_NAME هنا سأقوم بتغييرها من Laravel إلى EtharShrouf

شكل البريد المرسل

بعض الـعناصر Components المعرفة مسبقا في Markdown Email

في التوثيق الخاص بموقع Laravel تم شرح بعض العناصر المبنية مسبقا وأهمها

@component('mail::message')

# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6

This is a sentence

This is a sentence with **bolded text**.

@component('mail::button', ['url' => '', 'color' => 'success'])
Button One
@endcomponent

@component('mail::button', ['url' => '', 'color' => 'primary'])
Button Two
@endcomponent

@component('mail::panel')
This is the panel content.
@endcomponent

@component('mail::table')
| Items             | Quantity  | Total Price  |
| ------------------|:---------:|-------------:|
| Apple Iphone 10x  | 1 Nos     | $1200.00     |
| Backcase cover    | 2 Nos     | $15.00       |
| Total             | 3 Nos     | $1215.00     |
@endcomponent

Thanks,
{{ config('app.name') }}
@endcomponent

للتحكم أكثر في markdown يمكن التوجة للموقع https://dillinger.io/  وتصميم الشكل الذي نراه مناسباً .

ومن لا يرغب أو يجد صعوبة في إستخدام markdown يمكنه الإستعانة بموقع https://bootstrapemail.com/ حيث يعتمد بالتصميم على كلاسات البوتستراب.


التعليقات
زائر
منذ 3 سنوات

اسلوب شرح رائع وسهل

زائر
منذ 3 سنوات

👏✌✌✌😘😘😘

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