تعداد بازدید: 2398

Mail

جهت ارسال ایمیل در لاراول باید موارد زیر را در نظر داشته باشید.

  • تنظیمات ایمیل
  • ساخت کلاس Mailable
  • ارسال ایمیل

تنظیمات سرور ایمیل

تنظیمات مربوط به ایمیل در مسیر config/mail.php موجود می باشد. رول کار به این صورت است که به ازای هر option یا مقدار موجود در فایل .env را می خواند و در صورت خالی بودن این مقدار در فایل .env مقداری پیش فرض به آن اختصاص می دهد.

تنظیمات مربوط به ارسال ایمیل در فایل mail.php به شرح زیر است :

  • Mail Driver
  • SMTP Host Address
  • SMTP Host Port
  • Global “From” Address
  • E-Mail Encryption Protocol
  • SMTP Server Username
  • Sendmail System Path
  • Markdown Mail Settings

تنظیمات ایمیل در لاراول موجود در فایل .env به شکل زیر می باشد:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=nul
MAIL_ENCRYPTION=null

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

به همین منظور به ازای هر قالب ایمیل باید یک کلاس بسازید. مثلا ایمیل که پس از ساخت محصول باید فرستاده شود.

برای این کار باید دستور زیر را اجرا کنید :

php artisan make:mail ProductCreated

پس از اجرای دستور بالا کلاس زیر در مسیر app/Mail/ProductCreated.php ساخته می شود :

<?php

namespace App\Mail;

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

class ProductCreated extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(){}

    public function build()
    {
        return $this->view('view.name');
    }
}

کلاس بالا همان قالب ایمیلی است که هر زمان نیاز بود از آن استفاده می کنیم (instanse می گیریم). این کلاس هم نیاز به پارامتر دارد و هم نیاز به view . پارامتر ها از طریق متد سازنده به آن فرستاده می شود و در متد build قالب view را در آن return می کنیم.

در مثال زیر می خواهیم زمانی که محصول ساخته شد ایمیلی برای کاربر سازنده بفرستیم. در ابتدا باید شئ $product را برای ایمیل بسازیم (مثلا در کنترلر ساخته می شود) و در خروجی آن بفرستیم. برای این کار یک متغیر داخلی برای کلاس تعریف می کنیم که در متد سازنده مقدار دهی می شود. این متغیر در زمان ساخت شئ از روی کلاس یعنی جایی که ما از کلاس ProductCreated نمونه گیری (instanse) می گیریم باید مقدار دهی کنیم (مرحله ارسال ایمیل). این متغیر در طول view که در متد build داریم قابل دسترس است.

<?php

namespace App\Mail;

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

class ProductCreated extends Mailable
{
    use Queueable, SerializesModels;

    public $product;

    public function __construct($product)
    {
        $this->product = $product;
    }

    public function build()
    {
        return $this->view('emails.product-created');
    }
}

مثلا در view در مسیر resourses/views/emails/product-created.blade.php ما کد های زیر را داریم.

<!DOCTYPE html>
<html>
<head>
	<title>product created</title>
</head>
<body>
	<h1>product created with name {{$product->name}} </h1>
</body>
</html>

در مرحله ای که ایمیل را ارسال می کنیم قالب بالا به کاربر ارسال می شود.

ارسال ایمیل با Mail

برای ارسال ایمیل باید از Fecad با نام Mail استفاده کنیم. Mail پارامتر های زیادی می گیرد که شامل attach (الصاق فایل به ایمیل) و cc (Carbon Copy) و … می باشد . ما از to برای آدرس گیرنده و از send برای ارسال ایمیل استفاده می کنیم.

<?php

namespace App\Http\Controllers;

use App\Product;
use App\Mail\ProductCreated;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Controller;

class ProductController extends Controller
{
    public function create(Request $request)
    {
    	$product = App\Product::create($request->get('name'));
        // product created successfully ...
        Mail::to($request->user())->send(new ProductCreated($product));
    }
}
  • متد to به عنوان ورودی یک شئ از مدل User می گیرد.
  • متد send به عنوان ورودی یک شئ از مدل ProductCreated که از جنس Mailable و در مسیر App\Mail\ProductCreated می باشد می گیرد.
  • Mail در مسیر Illuminate\Support\Facades\Mail باید import شود.(زمانی که در controller استفاده می شود)

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Mail

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *