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で機能していたメール機能ですが、Laravel 5.でエラーが発生します。
Mail
はglobal namespace内のエイリアスです。名前空間の内部(この場合はApp\Http\Controllers
など)から参照する場合は、次のいずれかを行う必要があります。
バックスラッシュを追加します:
\Mail::send(...)
または、クラス宣言の前にuse
ステートメントを追加します。
namespace App\Http\Controllers;
use Mail; // <<<<
class MyController extends Controller {
同じことは、使用する他のファサードにも当てはまります。 Session
やRedirect
のように。
別の方法は、Mailファサードを使用することです
use Illuminate\Support\Facades\Mail;
あなたのコントローラーで
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!`);
});
このセットアップメールの後に、権限エラーが表示されている場合はメールが送信され、このURLをクリックしてこのラジオボタンをオンにします
https://www.google.com/settings/security/lesssecureapps
設定後、#laravel、#symfony、および任意のphpフレームワークで正常に動作します
ありがとうございました
Laravel= 5.8では、これをコントローラにも追加して解決しました:
この:
use App\Mail\<<THE_NAME_OF_YOUR_MAIL_CLASS>>;
use Illuminate\Support\Facades\Mail;
の代わりに:
use Mail;