php - larave5.3邮件问题

查看:67
本文介绍了php - larave5.3邮件问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<?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,打印‘发送邮件失败,请重试’请问这是为什么?我百分之百肯定每次都成功。

解决方案

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

/**
 * 发送邮件函数
 *
 * @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;

}

这篇关于php - larave5.3邮件问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆