Laravel, PHP

Gửi mail dạng plain/text trong laravel

Laravel hỗ trợ cả 2 dạng gửi mail là plain/text và html.

Bạn có thể tham khảo code kế thừa từ class Mailable.

Ví dụ:

class ConsolidatedEmail extends Mailable
{
    use Queueable, SerializesModels;
    protected $user;

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


    public function build()
    {
        return $this->view('email.consolidated_email_html', [
            'user'         => $this->user,

        ])->text('email.consolidated_email', [
            'user'         => $this->user,

        ])->subject('Test');
    }
}

Ở đây sẽ có 2 file ở resources/views/email là:

  • email.consolidated_email_html.blade.html: dùng cho hiển thị html
  • email.consolidated_email.blade.html: dùng cho plain text

Bên trên là trình bày về gửi mail dạng plain text. Chúng ta nói về lỗi trong plain text:

Giả sử có đoạn code sau:

@foreach($answer_users as $answer_user)
- {{ $answer_user->survey->name }}  
Deadline: {{ $answer_user->survey->end_date }} (UTC)  
Basic Points: {{ number_format($answer_user->basic_point_value) }} points  
{{ \App\Helpers\RedirectHelper::getRedirectUrlWithLoginedUrl($answer_user->user, 'user.survey.from_token', [ 'token' => $answer_user->token ]) }}
@endforeach

Đây là phần email hiển thị ở Mailhog:

Trên hình, bạn sẽ thấy là có đôi khi có dòng bị liền với dòng bên trên.

Cách sửa: bên thêm 2 dấu space vào cuối mỗi dòng sẽ tránh được lỗi này.

Chú ý: có thể IDE của bạn tự động xóa 2 space này đi vì nghĩ nó không cần thiết. Bạn cần tắt phần tự động này của IDE.