ارسال ایمیل با لاراول (Laravel)

?How to Send Email With Laravel

15 فروردین 1401
sending-email-with-laravel

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

برای ارسال ایمیل با لاراول یک کلاس برای این کار ایجاد می کنیم. هنگامی که این کلاس ساخته شد، باید پیکربندی ایمیل مانند نام میزبان، پورت، درایور، نام کاربری و جزئیات رمز عبور را در فایل env تعریف کنیم. در زیر می توانید مراحل ارسال ایمیل با لاراول به ساده ترین روش را بیاموزید.

ارسال ایمیل با لاراول

پیش نیازهای تولید برنامه ارسال ایمیل با لاراول

برای نوشتن برنامه ارسال ایمیل با لاراول پیش نیازهایی لازم است. در اینجا به آشنایی با PHP و Laravel نیاز داریم. افزون بر دانش برنامه نویسی و تسلط بر Laravel باید xampp و composer در سیستم شما نصب شده باشد. برای دانلود xampp به نشانی و برای دانلود composer به نشانی مراجعه کنید.

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

گام 1 - نصب لاراول

پس از نصب composer و xampp باید یک پروژه laravel ایجاد کنیم. برای این کار به محل مورد نظر برای نصب پروژه می رویم. هر جایی که خواستید می توانید پروژه خود را ایجاد کنید. من آن را در Desktop خود ایجاد می کنم. برای نصب برنامه به ترمینال یا cmd خود نیاز داریم. برای باز شدن cmd کلیدهای ترکیبی win+R را فشار می دهیم تا پنجره زیر نمایش داده شود:

نصب لاراول

OK را می زنیم تا cmd نمایش داده شود:

باز شدن پنجره cmd

از طریق cmd وارد جایی که می خواهیم می شویم. من می خواهم برنامه در Desktop باشد، پس با دستور cd Desktop وارد آن می شوم. سپس دستور زیر را در آن می نویسم:

composer create-project laravel/laravel send_email

اگر همه چیز به درستی پیش رفته باشد، دانلود پروژه انجام خواهد شد و باید تصویری مانند زیر ببینیم:

برای اجرای پروژه ابتدا باید وارد پوشه ایجاد شده که در اینجا send_email نام دارد شویم سپس باید دستور php artisan serve را در cmd بنویسیم:

 اگر به آدرس http://127.0.0.1:8000 برویم باید تصویر زیر را ببینیم:

 گام 2 – ساخت کنترلر

کنترلرها یکی دیگر از ویژگی های لاراول هستند. به جای تعریف منطق request در فایل های مسیر، می توان این کار را با کمک کلاس های Controller سازماندهی کرد. کنترلرها به منظور گروه بندی منطق رسیدگی به درخواست هایی که به هم مرتبط هستند در یک کلاس واحد قرار می گیرند. در پروژه لاراول، آن ها در دایرکتوری app/Http/Controllers ذخیره می شوند. فرم کامل MVC ،Model View Controller است.

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

php artisan make:controller MailController

MailController نام کنترلر است. اگر همه چیز به خوبی پیش رفته باشد باید تصویر زیر را ببینیم:

ساخت کنترلر در لاراول

گام 3 – ساخت Mail

لاراول یک API ایمیل ساده و تمیز ارائه می دهد که توسط کتابخانه محبوب SwiftMailer پشتیبانی می شود. لاراول و SwiftMailer درایورهایی را برای ارسال ایمیل از طریق SMTP، Mailgun، Postmark، Amazon SES و sendmail ارائه می‌کنند و به شما این امکان را می‌دهند ایمیل خود را ارسال کنید.

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

php artisan make:mail TestMail

نام کلاس Mail خود را TestMail گذاشته ایم. اگر همه چیز به خوبی پیش رفته باشد باید تصویر زیر را ببینیم:

گام 4 – پیکربندی فایل env.

پوشه send_mail ایجاد شده را در ویرایشگر کد خود باز کنید. برای ارسال ایمیل باید .env فایل را پیکربندی کنیم و تغییرهایی را در آن به وجود آوریم. تغییرهای شما باید مطابق با تصویر زیر باشد:

پیکربندی فایل env.

گام 5 – فعال کردن Less secure apps

در ادامه باید گزینه Less secure apps & your Google Account را در account google خود فعال کنید. اگر این کار را نکنید ایمیل فرستاده نخواهد شد. برای این کار باید وارد این لینک شوید. سپس مطابق تصویر زیر عمل می کنیم:

فعال کردن Less secure apps

گام 6 – تکمیل کردن MailController

کد زیر را در MailController.php که در app\Http\Controllers است قرار می دهیم:

تکمیل کردن MailController

<?php

namespace App\Http\Controllers;

use App\Mail\TestMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class MailController extends Controller
{
    public function sendEmail(){
        $details=[
            'title' => 'Sending Mail',
            'body' => 'this is for testing using gmail'
        ];

        Mail::to("example@gmail.com")->send(new TestMail($details));
        return "Email Send";
    }
}

در کد بالا در قسمت ()Mail::to باید نشانی ایمیلی که می خواهید به آن ایمیل بفرستید را بنویسید.

گام 7 – افزودن مسیر

حالا نوبت افزودن مسیر است. برای این کار وارد پوشه routes می شویم و فایل web.php را باز می کنیم:

افزودن مسیر

کدهای زیر را در فایل web.php وارد می کنیم:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MailController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/send-mail',[MailController::class,'sendEmail']);

در بالا با Route::get مسیر خود را که send-mail است تعریف می کنیم و کنترلر را که قبلا تعریف کرده بودیم برای آن درنظر می گیریم. این کنترلر را با دستور زیر وارد کرده ایم:

use App\Http\Controllers\MailController;

گام 8 – تکمیل کردن TestMail

تکمیل کردن TestMail

کد زیر را در TestMail.php که در app\Http\Mail است قرار می دهیم:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class TestMail 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('Send Email With Laravel')->view('emails.TestMail');
    }
}

گام 9 – ایجاد view

در اینجا می خواهیم یک view بسازیم. اگر ایمیل با موفقیت ارسال شود این view را خواهیم دید. برای این کار وارد پوشه resources\views می شویم و یک پوشه جدید به نام emails ایجاد می کنیم. داخل این پوشه فایل TestMail.blade.php را ایجاد می کنیم:

ایجاد view

کد زیر را وارد این فایل می کنیم:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Send Email With Laravel</title>
</head>
<body>
    <h1>{{$details['title']}}</h1>
    <p>{{$details['body']}}</p>
    <p>Thank You</p>
</body>
</html>

گام 10 – ارسال ایمیل با لاراول

برای ارسال ایمیل xampp باید روشن یا در حال کار کردن باشد. با دستور php artisan serve برنامه را اجرا می کنیم و پس از آن وارد http://localhost:8000 می شویم. جلوی این آدرس /send-mail را می نویسیم، مانند:

ارسال ایمیل با لاراول

سپس Enter را می زنیم تا درخواست فرستاده شود. اگر درخواست به درستی فرستاده شود باید تصویر زیر را ببینیم:

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

دریافت ایمیل با لاراول

نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.