我想向管理员发送电子邮件,而不是向用户发送要求注册新用户的电子邮件。我在控制器中试过这个
<?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中尝试了这个。在路由中执行此操作后,电子邮件正在发送,但注册表单值没有插入到数据库中。我需要在这做什么?
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');
});
答案 0 :(得分:1)
我认为您的控制器代码需要更新如下:
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']
。
希望这对你有用!
答案 1 :(得分:1)
虽然这是固执己见的,但我发现当你想对模型的事件作出反应时(在这种情况下,是用户创建),最好挂钩在模型的启动方法中捕获该事件。此外,请勿以阻止服务器响应的方式发送电子邮件。 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
,否则您将收到错误。
希望这会有所帮助。
答案 2 :(得分:0)
在控制器中编辑我的创建功能后,我得到了结果...我的值是插入数据库,并且电子邮件正在向amin发送请求注册用户。这是我的代码
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;
}
感谢大家的帮助
答案 3 :(得分:0)
尝试:
Mail::send('emailMessage', $use, function ($m) {
$m->to('To email id')
->subject('Confirm email');
$m->from('From email id');
});