2015-03-05 5 views
4

Я постоянно получаю эту ошибку App \ Http \ Контроллеры \ Почта 'не найден 'ошибка' Класс' в моем UserController.phpMail :: отправить() не работает в Laravel 5

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, но я получаю ошибки в Laravel 5. Любая помощь будет оценена по достоинству.

+0

Вы использовали почтовую черту? 'use Mail;' – nozzleman

ответ

8

Mail - это псевдоним внутри глобального пространства имен . Если вы хотите, чтобы ссылаться на него внутри пространства имен (например, App\Http\Controllers в вашем случае), вы должны либо:

Prepend обратная косая черта:

\Mail::send(...) 

Или добавьте use заявление до вашего объявления класса:

namespace App\Http\Controllers; 

use Mail; // <<<< 

class MyController extends Controller { 

То же самое касается других фасадов, которые вы используете. Как Session и Redirect.

+0

Это не имеет особого отношения к фактическому вопросу, но вы также можете посмотреть [инъекцию зависимостей] (http://laravel.com/docs/5.0/container) вместо использования фасадов ... – lukasgeiter

+0

Из Laravel 5.3 не забудьте также добавить 'use App \ Mail \ YourClass;' –

0

настройка вашего app/config/mail.php

return array(

    'driver' => 'smtp', 
    'host' => 'smtp.gmail.com', 
    'port' => 465, 
    'from' => array('address' => '[email protected]', 'name' => 'Welcome'), 
    'encryption' => 'ssl', 
    'username' => '[email protected]', 
    '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('[email protected]'); 
$message->to('[email protected]', 'Amaresh')->subject(`Welcome!`); 
}); 

после этой настройки почты посылает пользователю

если SSL или порт не проблема показывает чем нажать этот url и установите этот переключатель

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

OT Trun на

после конфигурации Я уверен, отправить электронную почту через # Laravel, # Symfony и любых рамок PHP

спасибо

4

Другой способ заключается в использовании Кольчуга фасаду

use Illuminate\Support\Facades\Mail; 

В вашем контроллере

Смежные вопросы