使用控制器或路由注册后发送电子邮件
Send email after registration using controller or route
我想向管理员而不是用户发送一封电子邮件,要求新用户注册。我在控制器中试过这个
<?php
namespace App\Http\Controllers\Auth;
use Mail;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Jrean\UserVerification\Traits\VerifiesUsers;
use Jrean\UserVerification\Facades\UserVerification;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = '/regmessage';
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'usertype' => 'required',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
//dd($data);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$user = array('name' => 'Admin');
Mail::send('emails.reminder', $user, function ($m) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
}
/*public function sendEmailReminder(Request $request, $id)
{
$user = User::findOrFail($id);
Mail::send('emails.reminder', ['user' => $user],
function ($m) use($user) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
}*/
}
而且我也在 route.php 中尝试过此操作..在发送电子邮件的路线中执行此操作后,但注册表值未插入到 database.what 我需要在这里做什么?
Route::post('/register',function()
{
$data = array('name' => 'Admin');
Mail::send('emailMessage', $data, function($message)
{
$message->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
return view('regmessage');
});
我认为您的控制器代码需要像这样更新:
protected function create(array $data)
{
//dd($data);
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$use = array('name' => 'Admin');
Mail::send('emails.reminder', $use, function ($m) {
$m->from('your from email address')
$m->to('mrbbangladesh2017@gmail.com')
$m->subject('Confirm email');
});
return $user;
}
更新
做出如下改变:
Mail::send('emails.reminder', $use, function ($m) use($data){...}
并使用 $data['email']
.
希望这对你有用!
虽然这是自以为是,但我发现当您想对模型的事件(在本例中为用户创建)做出反应时,最好在模型的引导方法中挂钩捕获该事件。此外,不要以阻止服务器响应的方式发送电子邮件。 Job 更好地处理了这个功能。
首先,创建作业来处理这个:
php artisan make:job SendAdminEmailOnUserCreation
打开那个新作业,然后找到句柄函数。
public function handle(Illuminate\Mail\Mailer $mail)
{
$mail->send('emails.reminder', ['name' => 'Admin'], function ($message) {
$message->from('me@my-domain.com')
->to('admin@my-domain.com')
->subject('A new user has registered');
});
}
接下来,确保您的作业实现 ShouldQueue
工厂:
class SendAdminEmailOnUserCreation implements ShouldQueue {
然后在您的 App\User
模型中:
public static function boot ()
{
parent::boot();
User::created(function(){
dispatch(new SendAdminEmailOnUserCreation());
});
}
最后,确保您的队列 运行 以便正确处理此作业:
php artisan queue:listen
备注
在您的问题中,您使用的是 emails.reminder
,如果它类似于 emails.auth.reminder
,则需要 $token
变量。否则,如果您修改了它,请确保它正在寻找的唯一变量是 $name
否则您将收到错误消息。
希望这对您有所帮助。
在控制器中编辑我的创建函数后,我得到了结果...我的值正在插入到数据库中,并且一封电子邮件正在发送给 amin,要求用户成为 registered.here 的我的代码
protected function create(array $data)
{
//dd($data);
$user=User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$use = array('name' => 'Admin');
Mail::send('emailMessage', $use, function ($m) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
return $user;
}
感谢大家的帮助
尝试:
Mail::send('emailMessage', $use, function ($m) {
$m->to('To email id')
->subject('Confirm email');
$m->from('From email id');
});
我想向管理员而不是用户发送一封电子邮件,要求新用户注册。我在控制器中试过这个
<?php
namespace App\Http\Controllers\Auth;
use Mail;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Jrean\UserVerification\Traits\VerifiesUsers;
use Jrean\UserVerification\Facades\UserVerification;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = '/regmessage';
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'usertype' => 'required',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
//dd($data);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$user = array('name' => 'Admin');
Mail::send('emails.reminder', $user, function ($m) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
}
/*public function sendEmailReminder(Request $request, $id)
{
$user = User::findOrFail($id);
Mail::send('emails.reminder', ['user' => $user],
function ($m) use($user) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
}*/
}
而且我也在 route.php 中尝试过此操作..在发送电子邮件的路线中执行此操作后,但注册表值未插入到 database.what 我需要在这里做什么?
Route::post('/register',function()
{
$data = array('name' => 'Admin');
Mail::send('emailMessage', $data, function($message)
{
$message->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
return view('regmessage');
});
我认为您的控制器代码需要像这样更新:
protected function create(array $data)
{
//dd($data);
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$use = array('name' => 'Admin');
Mail::send('emails.reminder', $use, function ($m) {
$m->from('your from email address')
$m->to('mrbbangladesh2017@gmail.com')
$m->subject('Confirm email');
});
return $user;
}
更新
做出如下改变:
Mail::send('emails.reminder', $use, function ($m) use($data){...}
并使用 $data['email']
.
希望这对你有用!
虽然这是自以为是,但我发现当您想对模型的事件(在本例中为用户创建)做出反应时,最好在模型的引导方法中挂钩捕获该事件。此外,不要以阻止服务器响应的方式发送电子邮件。 Job 更好地处理了这个功能。
首先,创建作业来处理这个:
php artisan make:job SendAdminEmailOnUserCreation
打开那个新作业,然后找到句柄函数。
public function handle(Illuminate\Mail\Mailer $mail)
{
$mail->send('emails.reminder', ['name' => 'Admin'], function ($message) {
$message->from('me@my-domain.com')
->to('admin@my-domain.com')
->subject('A new user has registered');
});
}
接下来,确保您的作业实现 ShouldQueue
工厂:
class SendAdminEmailOnUserCreation implements ShouldQueue {
然后在您的 App\User
模型中:
public static function boot ()
{
parent::boot();
User::created(function(){
dispatch(new SendAdminEmailOnUserCreation());
});
}
最后,确保您的队列 运行 以便正确处理此作业:
php artisan queue:listen
备注
在您的问题中,您使用的是 emails.reminder
,如果它类似于 emails.auth.reminder
,则需要 $token
变量。否则,如果您修改了它,请确保它正在寻找的唯一变量是 $name
否则您将收到错误消息。
希望这对您有所帮助。
在控制器中编辑我的创建函数后,我得到了结果...我的值正在插入到数据库中,并且一封电子邮件正在发送给 amin,要求用户成为 registered.here 的我的代码
protected function create(array $data)
{
//dd($data);
$user=User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'usertype' =>$data['usertype'],
'status' => 0,
]);
$use = array('name' => 'Admin');
Mail::send('emailMessage', $use, function ($m) {
$m->to('mrbbangladesh2017@gmail.com')
->subject('Confirm email');
});
return $user;
}
感谢大家的帮助
尝试:
Mail::send('emailMessage', $use, function ($m) {
$m->to('To email id')
->subject('Confirm email');
$m->from('From email id');
});