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 篇原创文章 · 获赞 7 · 访问量 1410

猜你喜欢

转载自blog.csdn.net/weixin_37647596/article/details/103629558