laravel

پلتفرم Laravel

(Laravel Platform)

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

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

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

برای استفاده از سرویس ایمیل در برنامه‌های Laravel باید پس از ایجاد سرویس ایمیل، اطلاعات دسترسی SMTP را طبق مستندات تنظیم متغیرها در تنظیمات برنامه اضافه کنید.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=587
MAIL_ENCRYPTION=tls
MAIL_USERNAME=my-app
MAIL_PASSWORD=87b9307a-dae9-410e-89a2-e77de60e4885
توجه داشته باشید که مقادیر MAIL_USERNAME و MAIL_PASSWORD در هر سرویس ایمیل ایجاد شده متفاوت است بنابراین باید آن‌ها را با مقادیر ارائه شده در تنظیمات سرویس ایمیل‌تان جایگزین کنید.

حال با تنظیم MAIL_ENCRYPTION=tlsمی‌توانید بدون نگرانی در پروژه‌ی خود با استفاده از دسترسی SMTP سرویس ایمیل لیارا به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.

قابل ذکر است که فیلد from باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.

ایجاد پروژه‌ی لاراولی

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

composer create-project --prefer-dist laravel/laravel blog

ایجاد کلاس Mailable

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

php artisan make:mail NotifyMail

هنگامی که کلاس notifyMail را ایجاد کردید، سپس به دایرکتوریapp/mail بروید و فایلnotifyMail.php را باز کنید و کد زیر را به آن اضافه کنید:

<?php

namespace AppMail;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateMailMailablesContent;
use IlluminateMailMailablesEnvelope;
use IlluminateQueueSerializesModels;

class NotifyMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Notify Mail',
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'view.name',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array<int, IlluminateMailMailablesAttachment>
     */
    public function attachments(): array
    {
        return [];
    }
}

با هر نامی که می خواهید، یک الگوی ایمیل ایجاد کنید؛ که می خواهید بفرستید. برای مثال:

return new Content(
            view: 'view.name',
        );

به:

return new Content(
            view: 'emails.demoMail',
        );

در مرحله بعد، باید یک قالب ایمیل با نامdemoMail.blade.phpدر دایرکتوری resources/views/emailsایجاد کنید.

اضافه کردن Route

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

use App\Http\Controllers\SendEmailController;

Route::post('send-email', [SendEmailController::class, 'index']);

ایجاد یک دایرکتوری و blade view

در این مرحله، دایرکتوری به‌نام email داخل دایرکتوریresources/views ایجاد کنید. سپس یک فایل به‌نامdemoMail.blade.php در داخلresources/views/emails ایجاد کنید. و کد زیر را داخل آن وارد کنید.

<!DOCTYPE html>
<html>
<head>
  <title>Laravel email example with Liara</title>
</head>
<body>

  <h1>This is a test mail to see how Liara works.</h1>
  <p>Laravel 10 send email example.</p>

</body>
</html> 

ایجاد کنترلر ارسال ایمیل

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

php artisan make:controller SendEmailController

سپس به دایرکتوری app/Http/Controllers بروید وSendEmailController.php را باز کنید. سپس کد زیر را در داخل آن وارد کنید:

<?php

namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
  
use Mail;
  
use App\Mail\NotifyMail;
  
  
class SendEmailController extends Controller
{
      
  public function index()
  {
    Mail::to('destination@gmail.com')->send(new NotifyMail());
  
    return "Great! Your email has been sent successfully.";
  } 
}

برای اطلاعات بیشتر می‌توانید به مستندات Laravel مراجعه کنید.

متوجه شدم، برو گام بعدی!
;