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

در این بخش از آموزش لاراول یک روش ساد را برای ارسال ایمیل معرفی معرفی خواهیم کرد. لاراول 8 کلاس email را برای ارسال ایمیل فراهم کرده است و به شما امکان استفاده از چندین driver را برای ارسال ایمیل میدهد. درایور هایی که شما میتوانید برای ارسال ایمیل استفاده کنید عبارت هستند از :

  • smtp
  • Mailgun
  • Postmark
  •  Amazon SES
  • sendmail

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

  • مرحله اول : پیکر بندی فایل env

شما باید در فایل env پروژه لارول خود مشخص کنید که میخواهید از چه درایوری برای ارسال ایمیل استفاده کنید. مواردی که لازم است در این فایل مشخص کنید عبارت هستند از درایور ایمیل ، میزبان ایمیل ، پورت ایمیل، نام کاربری ایمیل و رمز عبور ایمیل. فایل 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 را برای ارسال ایمیل ایجاد خواهیم کرد. ابتدا دستور زیر را در command prompt اجرا کنید تا کلاس ایمیل ایجاد شود.

php artisan make:mail MyTestMail

سپس با مراجعه به مسیر app>Mail مشاهده خواهید کرد که کلاس مربوطه ایجاد شده است و حاوی دستورات زیر می باشد.

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

در این قسمت ما در بخش view های پروژه لاراول یک پوشه با نام emails ایجاد نموده و blade view به نام myTestMail در آن ایجاد میکنیم. از آنجایی که هدف ما ارسال یک ایمیل ساده است, نیازی به استایل خاصی برای این ویو نداریم. اما شما میتوانید به راحتی به آن استایل بدهید.

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>

نکته: درصورتی که پیام یا همان body ایمیل شما شامل تگ های html میشود بجای {{ details['body']$ }} از {!! details['body']$ !!} استفاده نمایید.

  • مرحله چهارم: افزودن Route

حال نوبت به ایجاد route برای ارسال ایمیل خواهد رسید. ما مسیر وب زیر را برای آزمایش ارسال ایمیل ایجاد خواهیم کرد.

routes/web.php

Route::get('send-mail', function () {
   
    $details = [
        'title' => 'Mail from www.maryam-hajireza.ir',
        'body' => 'This is for testing email using smtp'
    ];
   
    \Mail::to('your_receiver_email@gmail.com')->send(new \App\Mail\MyTestMail($details));
   
    dd("Email is Sent.");
});

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

php artisan serve

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

http://localhost:8000/send-mail

توجه: دقت کنید که به صورت پیش فرض اکانت gmail شما اجازه دسترسی برنامه هایی که امنیت پایینی دارند را نمی دهد. برای آنکه شما بتوانید با ستفاده از gmail در local خود ایمیل ارسال کنید لازم است مراحل زیر تا طی کنید:

  1. وارد اکانت gmail  خود شوید.
  2. به بخش مدیریت اکانت گوگل بروید.
  3. وارد بخش امنیت یا همان security شوید.
  4. قسمت Less secure app access را پیدا کنید.
  5. روی دکمه off کلیک کنید تا اجازه دسترسی داده شود.