邮件::send()在Laravel 5中不起作用


Mail::send() not working in Laravel 5

我在我的UserController.php 中不断收到错误"class"App''Http''Controllers''Mail"not found"

    public function store(CreateUserRequest $request)
{
    $result = DB::table('clients')->select('client_code','name','email')
                                  ->where('client_code','=',$request->code)
                                  ->where('email','=',$request->email)
                                  ->first();
    if($result){
        $tmp_pass = str_random(10);
        $user = User::create([
            'username'      => $result->name,
            'email'         => $request->email,
            'password'      => $tmp_pass,
            'tmp_pass'      => '',
            'active'        => 0,
            'client_code'   => $request->code
        ]);
        if($user){
            Mail::send('emails.verify',array('username' => $result->name, 'tmp_pass' => $tmp_pass), function($message) use ($user){
                $message->to($user->email, $user->username)
                    ->subject('Verify your Account');
            });
            return Redirect::to('/')
                ->with('message', 'Thanks for signing up! Please check your email.');
        }
        else{
            return Redirect::to('/')
                            ->with('message', 'Something went wrong');
        }
    }
    else{
        Session::flash('message', "Invalid code or email.");
        return redirect('/');
    }
}

邮件功能曾经在Laravel 4中工作,但我在Laraver 5中遇到了错误。如有任何帮助,我们将不胜感激。

Mail全局命名空间中的别名。当你想从命名空间内部引用它时(在你的例子中是App'Http'Controllers),你必须:

以反斜杠开头:

'Mail::send(...)

或者在类声明之前添加use语句:

namespace App'Http'Controllers;
use Mail;  // <<<<
class MyController extends Controller {

你使用的其他立面也是如此。如CCD_ 4和CCD_。

另一种方法是使用Mail facade

use Illuminate'Support'Facades'Mail;

在您的控制器

在Laravel 5.8中,我通过在控制器中添加以下内容来解决此问题:

这个:

use App'Mail'<<THE_NAME_OF_YOUR_MAIL_CLASS>>;
use Illuminate'Support'Facades'Mail;

代替:

use Mail;

设置app/config/mail.php

return array(
    'driver' => 'smtp',
    'host' => 'smtp.gmail.com',
    'port' => 465,
    'from' => array('address' => 'your@gmail.com', 'name' => 'Welcome'),
    'encryption' => 'ssl',
    'username' => 'your@gmail.com',
    'password' => 'passowrd',
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
);

比控制器中的设置:

use Mail;
 'Mail::send('tickets.emails.tickets',array('ticketsCurrentNewId'=>
$ticketsCurrentNewId->id,'ticketsCurrentSubjectId'=>$ticketsCurrentNewId->subject,'ticketsCurrentLocationsObj'=>$ticketsCurrentLocationsObjname), function($message)
{
//$message->from('your@gmail.com');
$message->to('your@gmail.com', 'Amaresh')->subject(`Welcome!`);
});

在这个设置邮件发送电子邮件之后,如果有任何权限错误显示,然后点击这个url并检查这个单选按钮

https://www.google.com/settings/security/lesssecureapps

配置后,它在#laravel、#symfony和任何php框架中都能正常工作

感谢