سوال بپرسید
0

ارسال ایمیل در لاراول

سوال بپرسید

سلام دوستان من یه سایت فروشگاهی دارم طراحی میکنم و میخوام برای کاربر هنگامی که در قسمت پرسش و پاسخ به پرسش او جواب داد شد ایمیلی فرستاده شه تا اطلاع پیدا کنه از اینکه به پرسش او پاسخ داده شده ممنون میشم کمک کنید که چجوری این امکان را برای سایت قرار دهم.

برچسب ها:
گزارش سوال
پرسیده شده در
آمار بازدید: 194

1 پاسخ

0

سلام، یک مسیر بسیار منظم و دقیق برای پیاده سازی ایمیل در لاراول وجود دارد که در ادامه به شرح آن می پردازم:

۱) ابتدا فایل env. را در روت پوشه پروژه باز کرده و تغییرات زیر را انجام دهید:

MAIL_DRIVER=smtp
MAIL_HOST=نام هاست یا سرور خودتان
MAIL_PORT=2525
MAIL_USERNAME= // نام کاربری ایمیل هاست
MAIL_PASSWORD= // رمز عبور
MAIL_ENCRYPTION=null

۲) در مرحله بعدی باید یک کلاس ایمیل ایجاد کنید تا صفحه view ایمیل خود را در آن تعریف نمایید. برای اینکار دستور زیر را در cmd وارد نمایید:

php artisan make:mail SendMailable

۳) در مرحله بعدی وارد مسیر App\Mail\SendMailable.php شده و property ها و متدها را برای این کلاس تعریف کنید. دقت نمایید که در این مثال متغییر name توسط یک تابع به هنگام فراخوانی ایمیل ارسال می شود:

<?php

namespace App\Mail;

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

class SendMailable extends Mailable
{
    use Queueable, SerializesModels;
    public $name;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($name)
    {
        $this->name = $name;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.name');
    }
}

۴) حالا باید یک صفحه blade جهت طراحی صفحه ایمیل تعریف کنیم. بنابراین در پوشه views یک پوشه به نام emails درسته کرده و درون آن فایل با نام name.blade.php را به صورت زیر کدنویسی می کنیم:

<div>
    Hi, This is : {{ $name }}
</div>

۵) در مرحله بعدی باید مسیردهی route را جهت ارسال ایمیل بنویسیم:

Route::get('/send/email', 'HomeController@mail');

سپس درون تابع mail در کنترلر HomeController کدنویسی زیر را انجام می دهیم:

use Illuminate\Support\Facades\Mail;
use App\Mail\SendMailable;

public function mail()
{
   $name = 'roxo';
   Mail::to('info@roxo.ir')->send(new SendMailable($name));
   
   return 'Email was sent';
}

در واقع ما با استفاده از کلاس Mailable و فساد Mail این کار را انجام داده ایم.

حال اگر به مسیر send/email‌ بروید. یک ایمیل برای کاربر ارسال می شود.

تا به اینجای کا ما به شما آموزش دادیم که چطور یک ایمیل به کاربر موردنظر ارسال می شود. حالا اگر بخواهیم مرتبط با سوال شما این موضوع را پیاده سازی کنیم کافیست تابع Mail:to را به محض ارسال یک پاسخ به سوال کاربر، فراخوانی کنیم. ولی باید دقت داشته باشید که به جای info@roxo.ir باید ایمیل کاربر و به جای name = roxo$ نام کاربر جایگزین شود.

امیدوارم این راه حل، مشکل شما را برطرف کرده باشد.