laravel 發送郵件功能

1.
php artisan make:controller MailController
2.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use Illuminate\Mail\Mailable;
use App\Services\MailService;
class MailController extends Controller {

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

    public function send(Request $request)
    {
        $this->mail->send($request->all());
    }


    public function sendFile(Request $request)
    {
        $this->mail->sendFile($request->all());
    }

}
3.創建服務層,將郵件邏輯寫到裏面app/Services/MailService.php
<?php

namespace App\Services;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Request;
use Mail;
use Illuminate\Mail\Mailable;
class MailService
{
    public function send($data) {
        $to_email = $data['to_mail'];
        $title = $data['title'];
        // Mail::send()的返回值爲空,所以可以其他方法進行判斷
        Mail::send('emails.email',['title'=>$title,'to_email'=>$to_email],function($message)use($to_email){
            $to = $to_email; $message ->to($to)->subject('郵件測試');
        });
        // 返回的一個錯誤數組,利用此可以判斷是否發送成功
        dd(Mail::failures());
    }

    public function sendFile($data){

        Mail::send('emails.email',['title'=>$data['title'],'to_email'=>$data['to_email']],function($message)use($data){
            $message->to($data['to_email'])->subject('郵件測試');

            $attachment = ($data['path']);
//            dd($attachment);
            // 在郵件中上傳附件
            $message->attach($attachment,['as'=>'中文文檔.xls']);
        });
    }
}
4.創建 view/emails/email.blade.php

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>lwl</title>
</head>
<body>
<div style="width:100%;max-width: 640px;margin:40px auto; background: #f5f5f8;border-radius: 5px 5px 0 0;padding-bottom: 20px;">
    <div style="border-radius:5px;width:100%;height:50px;background: #0C80FF; display: flex; flex-direction: row; align-items:center;padding:0 20px;box-sizing: border-box">
        <div style="font-size: 18px;color:#fff;">《lwl》</div>
        <div style="width:2px;height:24px;margin:0 20px;background: #fff;"></div>
        <div style="font-size:18px;color:#fff;">{{$title}}</div>
    </div>
    <div style="margin:0 10px;">
        <div style="font-size: 20px;font-weight: bold;margin-top:40px;">
            <span>Hi!</span>
            <span>{{$to_email}}</span>
        </div>
        <div style="margin-top:10px;color:#000;font-size: 18px;">附件列表</div>

    </div>

</div>
</body>
</html>
5.配置.env
PUSHER_APP_SECRET=IL_DRIVER=smtp
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465
MAIL_USERNAME=賬號
MAIL_PASSWORD=密碼
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=地址
MAIL_FROM_USERNAME=用戶名
MAIL_FROM_NAME=用戶名
6.
localhost/api/mail/send?to_mail=123@qq.com"&title=hello
發佈了21 篇原創文章 · 獲贊 8 · 訪問量 5364
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章