laravel 发送邮件配置

laravel 发送邮件配置


摘要:本文讲述 Laravel 如何配置 QQ 邮箱,进行邮件发送 。


1. 开启 QQ 邮箱smtp,获取授权码:

登录 QQ 邮箱 -> 设置 -> 账户 -> 开启 POP3/SMTP 服务

授权码

2. laravel邮件配置

  • 配置 .env 文件

    # 邮件发送驱动 邮箱所在主机
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.qq.com
    
    # 邮箱发送服务端口 ssl加密安全传输
    MAIL_PORT=465
    MAIL_ENCRYPTION=ssl
    
    # 发件人邮箱
    MAIL_USERNAME=121****[email protected]
    MAIL_FROM_ADDRESS=121****[email protected]
    
    # 授权码
    MAIL_PASSWORD=dxur********jafh
    
    MAIL_FROM_NAME=
    

    配置完成。

3. 添加控制器方法,发送邮件(仅描述主要部分,自己配路由,进行完善)

namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Mail;

class MailController extends Controller
  • 发送纯文本内容 + 附件

    Mail::raw('Hello, I`m QTX, 文本内容', function($message){
        $to = '***@163.com';
        $message->to($to)->subject('纯文本信息邮件测试,标题');
    
        $attachment = public_path().'/storage/seller/1.png';
        if (!file_exists($attachment)) {
            die('文件不存在');
        }
        // 防止中文乱码
        $message->attach($attachment, ['as' => '=?UTF-8?B?'.base64_encode('二维码图片').'?=.png']);
    });
    var_dump(Mail::failures());  // 打印失败信息,进行判断处理
    
  • 发送模板内容 + 附件

    Mail::send('email.test', ['name' => 'QTX'], function($message) {
        $to = '***@163.com';
        $message->to($to)->subject('模板发送邮件测试,标题');
        $attachment = public_path().'/storage/seller/1.png';
        if (!file_exists($attachment)) {
            die('文件不存在');
        }
        // 防止中文乱码
        $message->attach($attachment, ['as' => '=?UTF-8?B?'.base64_encode('二维码图片').'?=.png']);
    });
    var_dump(Mail::failures());  // 打印失败信息,进行判断处理
    

    在 view/email/test.blade.php 模板文件中,进行自定义处理

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style type="text/css">
            h1 { font-size: 16px; color: #fdd; }
            p { padding: 0 20px; }
        </style>
    </head>
    <body>
    <h1>你好:</h1>
    <p>{{$name}}</p>
    </body>
    </html>
    
  • 将发送邮箱变量化

    $to = $_params['email'];
    Mail::send('email.test', ['name' => 'QTX'], function($message) use($to) {
        // 同上
    });
    
  • 发送多人邮件

    $_params['email'] = '***@163.com';
    $emails = ['121***[email protected]', $_params['email']];
    
    foreach ($emails as $value) {
        $to = $value;
        Mail::send('email.test', ['name' => 'QTX'], function($message) use($to, $subject = $_params['subject']) {
            $message->to($to)->subject($subject);
    
            $attachment = public_path().'/storage/seller/1.png';
            if (!file_exists($attachment)) {
                die('文件不存在');
            }
            // 防止中文乱码
            $message->attach($attachment, ['as' => '=?UTF-8?B?'.base64_encode('二维码图片').'?=.png']);
        });
    }
    



- 欢迎各大神点评 -




猜你喜欢

转载自blog.csdn.net/hqt_29/article/details/81096209