• Hotline: +84–246 293 9036
  • recruit@vietis.com.vn
  • 3F & 5F, 3A Building, Lane 82 Duy Tan Str., Hanoi, Vietnam

Sau đây sẽ là một hướng dẫn ngắn gọn để có thể sử dụng Gmail như một dịch vụ để gửi email test trong dự án.
Cụ thể ở đây sẽ sử dụng địa chỉ email test được cung cấp cho mỗi dự án.
Trong các bài tiếp theo mình sẽ viết về sử dụng Mailtrap hoặc 1 số dịch vụ khác phù hợp hơn với việc test mail:

Một số điều cần lưu ý:

  • Setting này chỉ áp dụng để test trong giai đoạn phát triển
  • Do giới hạn của domain vietis.com.vn nên địa chỉ email nhận cũng sẽ phải cùng mail domain

Chuẩn bị:

  • Địa chỉ email test được cung cấp trong dự án
  • Project Laravel chạy Https (SSL local)

Gmail config

Enable Less Secure App

Bước 1: truy cập trang Manage Your Google Account

Bước 2: truy cập mục Security

Bước 3: truy cập mục Less Secure App Access

Bước 4: enable Allow less secure apps

Sửa đoạn config sau trong file .env

Laravel config

Lưu ý cần điền chính xác, không thừa thiếu dấu cách, dấu ngoặc kép

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587MAIL_USERNAME=email_address@vietis.com.vn
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="email_address@vietis.com.vn"
MAIL_FROM_NAME="${APP_NAME}"

Code send mail

Tạo mailable

Chạy câu lệnh tạo mailable class:

php artisan make:mail SendInvoiceToAdmin

Sau khi chạy sẽ được class như sau:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Queue\SerializesModels;
use Illuminate\Mail\Mailables\Envelope;

class SendInvoiceToAdmin extends Mailable
{    
      use Queueable, SerializesModels;

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

    /**
     * Get the message content definition.
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    public function content()
    {
        return new Content(
            view: 'emails.invoice.admin',
            with: [

            ],
        );
    }

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: "Test subject",
        );
    }
}

những điểm cần lưu ý trong class mới tạo:

  • view: 'emails.invoice.admin': đây là đường dẫn tới blade template chứa content trong email được gửi
  • envelope: function để setting các thông tin như địa chỉ gửi, subject email

Send mail

Gọi hàm sau ở controller:

// $emails: list emails to send (type array)
Mail::to($emails)->send(new SendInvoiceToAdmin());

Test mail ở tinker

Mail::raw('Hello World!', function($msg) {$msg->to('manh.nguyenthe@vietis.com.vn')->subject('Test Email'); });

ĐỐI TÁC TIÊU BIỂU