php - larave5.3邮件问题
大家讲道理
大家讲道理 2017-04-10 17:34:48
0
3
400
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Mail;

class MailController extends Controller
{
    public function send()
    {
        $name = '隔壁老王';
        $flag = Mail::send('emails.test',['name'=>$name],function($message){
            $to = '13580584313@163.com';
            $message ->to($to)->subject('成功啦');
        });

        if($flag){
            echo '发送邮件成功,请查收!';
        }else{
            echo '发送邮件失败,请重试!';
        }
    }
}

这是我发邮件的控制器,路由和配置就不贴了,我的问题是:我邮件明明发送成功了,可是$flag每次都是null,打印‘发送邮件失败,请重试’请问这是为什么?我百分之百肯定每次都成功。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(3)
小葫芦

Illuminate\Contracts\Mail\Mailer

send这个方法不返回的.

具体实现可以看下Illuminate\Mail\Mailersend.

我也是找不出检测发送的方法

哦,Illuminate\Mail\Mailer有个failure方法, 你可以试试

伊谢尔伦

send没有返回值,所以你的$flag总是null
可以用failures检查:

Mail::send(...);

if (count(Mail::failures()) > 0) {
    // Mail::failures() 是一个包含发送失败的邮件地址的数组
    echo '发送邮件成功,请查收!';
}
刘奇

没有返回值的;我分别给简化成函数和方法便于理解;亲测可用;

/**
 * 发送邮件函数
 *
 * @param $email            收件人邮箱  如果群发 则传入数组
 * @param $name             收件人名称
 * @param $subject          标题
 * @param $data             邮件内容数组形式 邮件模板中需要用的的变量 示例:['name'=>'帅白','phone'=>'110']
 * @param string $template  邮件模板
 * @return array            发送状态
 */
function sendEmail($email, $name, $subject, $data, $template='emails.test')
{
    Mail::send($template, $data, function($message) use($email, $name, $subject) {
        //如果是数组;则群发邮件
        if (is_array($email)) {
            foreach ($email as $k => $v) {
                $message->to($v, $name)->subject($subject);
            }
        }else{
            $message->to($email, $name)->subject($subject);
        }
    });
    if (count(Mail::failures()) > 0) {
        $data=array(
            'status_code'=>500,
            'message'=>'邮件发送失败'
        );
    }else{
        $data=array(
            'status_code'=>200,
            'message'=>'邮件发送成功'
        );

    }
    return $data;

}
/**
 * 发送邮件方法
 */
public function sendEmail()
{
    $email = '收件人邮箱';
    $name = '收件人名称';
    $subject = '标题';
    $data = ['邮件内容数组形式'];
    $template = '邮件模板';
    Mail::send($template, $data, function($message) use($email, $name, $subject) {
        //如果是数组;则群发邮件
        if (is_array($email)) {
            foreach ($email as $k => $v) {
                $message->to($v, $name)->subject($subject);
            }
        }else{
            $message->to($email, $name)->subject($subject);
        }
    });
    if (count(Mail::failures()) > 0) {
        $data=array(
            'status_code'=>500,
            'message'=>'邮件发送失败'
        );
    }else{
        $data=array(
            'status_code'=>200,
            'message'=>'邮件发送成功'
        );

    }
    return $data;

}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal