چگونه در لاراول همزمان چندین ایمیل ارسال کنیم؟
چگونه در لاراول همزمان چندین ایمیل ارسال کنیم؟

در این بخش از آموزش لاراول ارسال همزمان چندین ایمیل را در لاراول آموزش خواهیم داد. ما در این بخش خواهیم آموخت که چطور میتوانیم با کمک کلاس Mail لاراول چندین ایمیل را بطور همزمان ارسال کنیم. کلاس Mail لارول و درایور هایی که لاراول آنها را برای ارسال ایمیل در اختیار ما قرار میدهد را در پست "چگونه در لاراول ایمیل ارسال کنیم؟" معرفی کردیم؛ بنابراین در صورتی که این پست را مطالعه نکرده اید میتوانید ابتدا به آن مراجعه کنید.

در این آموزش ما از Gmail SMTP  برای ارسال ایمیل استفاده میکنیم. این به ما این امکان را می دهد که بتوانیمم به سادگی در localhost ایمیل ارسال کنیم. با دنبال کردن مراحل زیر شما قادر خواهید بود به راحتی با استفاده از لاراول چندین ایمیل را بطور همزمان ارسال کنید.

  • مرحله اول : آماده سازی فایل env

ابتدا درایور مورد استفاده و اکانت gmail خود را در فایل env معرفی خواهیم کرد.

.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_gmail@gmail.com
MAIL_PASSWORD=your_gmail_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your_gmail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
  • مرحله دوم: ایجاد کلاس ایمیل

کلاس MyTestMail.php را در app>Mail با اجرای دستور زیر در ترمینال ایجاد خواهیم کرد.

php artisan make:mail MyTestMail

مشاهده خواهید کرد که کلاس مربوطه با دستورات زیر ایجاد خواهد شد.

app/Mail/MyTestMail.php

<?php
  
namespace App\Mail;
  
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
  
class MyTestMail extends Mailable
{
    use Queueable, SerializesModels;
  
    public $details;
  
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details = $details;
    }
  
    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('Mail from ItSolutionStuff.com')
                    ->view('emails.myTestMail');
    }
}
  • مرحله سوم: ایجاد Blade View

ویو myTestMail.blade.php را در مسیر resources>views>emails ایجاد خواهیم کرد و دستورات زیر را در آن قرار میدهیم.

resources/views/emails/myTestMail.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>www.maryam-hajireza.ir</title>
</head>
<body>
    <h1>{{ $details['title'] }}</h1>
    <p>{{ $details['body'] }}</p>
   
    <p>Thank you</p>
</body>
</html>
  • مرحله چهارم : ایجاد Route

در این قسمت web route را برای ارسال ایمیل ها ایجاد خواهیم نمود.

routes/web.php

Route::get('send-mail', function () {

    $emails = array("myemail1@email.com", "myemail2@email.com");

    $details = [
        'title' => 'Mail from www.maryam-hajireza.ir',
        'body' => 'This is for testing email using smtp'
    ];
   
    \Mail::send('emails.myTestMail', $details, function($message) use ($emails)
    {
        $message->bcc($emails)->subject('Message from www.maryam-hajireza.ir');
    });
   
    dd("Email is Sent.");
});

پروژه را با اجرای دستور زیر در ترمینال اجرا کنید.

php artisan serve

به مسیر زیر رفته و مشاهده کنید که ایمیل ها به درستی ارسال خواهند شد.

http://localhost:8000/send-mail