چگونه در لاراول ایمیل را به همراه فایل پیوست ارسال کنیم؟
چگونه در لاراول ایمیل را به همراه فایل پیوست ارسال کنیم؟

در این پست نحوه ارسال ایمیل به همراه فایل های پیوست را با ارائه یک مثال آموزش خواهیم داد. ما در لاراول های 6, 7 و 8 این امکان را داریم که به همراه ایمیل خود فایل های پیوست را نیز ارسال نماییم. در این آموزش همانند آموزش های قبلی از Gmail SMTP برای ارسال ایمیل استفاده خواهیم نمود تا بتوانیم دستورات را در localhost به راحتی تست نماییم.

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

  • مرحله اول : ایجاد پروژه لاراول

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

composer create-project --prefer-dist laravel/laravel blog
  • مرحله دوم : فایل env زا پیکر بندی کنید

فایل env را باز کرده و تنظیمات زیر را برای ارسال ایمیل با درایور SMTP اعمال نمایید.

.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}"
  • مرحله سوم : اضافه کردن Route

در این مرحله باید route لازم برای ارسال ایمیل را ایجاد کنیم. بنابر این فایل web.php را باز کرده و route زیر را به آن اضافه خواهیم کرد.

routes/web.php

Route::get('send-email', [MyTestMailController::class, 'index']);
  • مرحله چهارم : افزودن Controller

در این مرحله کنترلر MyTestMailController را ایجاد خواهیم کرد که وظیفه ارسال ایمیل به همراه پیوست را بر عهده دارد.

app/Http/Controllers/MyTestMailController.php

<?php
  
namespace App\Http\Controllers;

use Mail;
  
class MyTestMailController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $data["email"] = "example_email@gmail.com";
        $data["title"] = "From www.maryam-hajireza.ir";
        $data["body"] = "This is A Demo";
 
        $files = [
            public_path('files/path_to_file.pdf'),
            public_path('files/path_to_file.png'),
        ];
  
        Mail::send('emails.myTestMail', $data, function($message)use($data, $files) {
            $message->to($data["email"], $data["email"])
                    ->subject($data["title"]);
 
            foreach ($files as $file){
                $message->attach($file);
            }
            
        });
 
        dd('Mail sent successfully');
    }
}
  • مرحله پنجم : ایجاد فایل View

در مرحله آخر فایل myTestMail.blade.php را برای ارسال ایمیل خود با لاراول ایجاد خواهیم کرد و دستورات زیر را به آن اضافه خواهیم نمود.

resources/views/emails/myTestMail.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>www.maryam-hajireza.ir</title>
</head>
<body>
    <h1>{{ $title }}</h1>
    <p>{{ $body }}</p>
     
    <p>Thank you</p>
</body>
</html>

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

php artisan serve
localhost:8000/send-email