傳送郵件

風吹過有夏天的味道發表於2021-10-22

郵件配置 .env

傳送郵件使用 25 埠,或者 465 埠

  • 465 配置方式
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.qq.com
    MAIL_PORT=465
    MAIL_USERNAME=309078303@qq.com
    MAIL_PASSWORD=ofg-----caei // 郵箱授權碼
    MAIL_ENCRYPTION=ssl
    MAIL_FROM_ADDRESS=309078303@qq.com // 發件人郵箱
    MAIL_FROM_NAME=發件人名稱
  • 25 配置方式
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.qq.com
    MAIL_PORT=25
    MAIL_USERNAME=309078303@qq.com
    MAIL_PASSWORD=ofg-----caei // 郵箱授權碼
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS=309078303@qq.com // 發件人郵箱
    MAIL_FROM_NAME=發件人名稱

建立郵件 view

在 view 中新增 mail-msg.blade.php 檔案

建立郵件

php artisan make:mail MsgMail
<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class MsgMail extends Mailable
{
    use Queueable, SerializesModels;

    protected $aToUsers;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($aToUsers)
    {
        $this->aToUsers = $aToUsers;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        // 收件人
        $this->to($this->aToUsers);
        // 抄送人
        $this->cc(['test@qq.com']);
        // 密送人
        $this->bcc(['test@qq.com']);

        // 附件 使用絕對路徑
        $this->attach('D:\www\lara_es\public\test5.jpg');

        /**
         * storage 路徑新增附件
         * 預設 storage/app 路徑字首,補足後面的路徑即可
         * 字首具體看 app/config/filesystems.php 中 local.root 的配置
         */
        $this->attachFromStorage('public/test5.jpg');

        return $this->view('mail-msg');
    }
}

在控制器中使用

<?php

namespace App\Http\Controllers;

use App\Mail\MsgMail;
use Illuminate\Support\Facades\Mail;

class TestController extends Controller
{
   public function index(){
       // 直接傳送
       Mail::send(new MsgMail(['test@qq.com']));
       // 佇列方式傳送
       Mail::queue(new MsgMail(['test@qq.com']));
   }
}

使用佇列傳送

  • 安裝 predis
    compoer require predis/predis
  • 配置env
    # 修改此項
    QUEUE_CONNECTION=redis
    # 新增此項
    REDIS_CLIENT=predis
  • 開啟佇列
    php artisan queue:work --tries=3
本作品採用《CC 協議》,轉載必須註明作者和本文連結
喜歡的話就點個贊吧!

相關文章