Я новичок в PHP и еще в Laravel и я нахожу некоторые трудные попытки отправить электронное письмо не предопределенному пользователю.
Так что я использую Осветить \ Support \ \ Фасады почты учебный класс.
Если я делаю что-то вроде этого, он работает нормально:
$registrationMail = [
'title' => 'Registrazione albergatore su portale BeTrivius',
'url' => URL::to('/').'/activate?email='.$data['email'].'&token='.$token,
'email' => $data['email'],
'name' => $data['name'],
'surname' => $data['surname']
];
Mail::send('emails.registrationMail', $registrationMail, function($message) {
$message->to('[email protected]', 'recipient-name')->subject('email subject');
});
Поэтому я звоню Отправить() метод почта переходящий класс к нему:
Он работает нормально, но при этом получатель электронной почты статичен, и электронная почта будет отправляться всегда на один и тот же адрес электронной почты.
Это не хорошо для меня, потому что я должен отправить это электронное письмо по адресу, указанному в $ RegistrationMail [ ‘электронная почта’] имущество.
Но делаем так:
Mail::send('emails.registrationMail', $registrationMail, function($message) {
$message->to($registrationMail['email'], $data['name'].' '.$data['surname'])->subject('titolo');
});
$ registrationMail кажется невидимым в функцию обратного вызова (говорит мне Неопределенная переменная). Почему я не вижу внешнего свойства внутри функции обратного вызова?
Поэтому я не могу получить эту информацию таким образом.
Поэтому я попытался добавить $ registrationMail переменная в качестве параметра этой функции обратного вызова, таким образом:
Mail::send('emails.registrationMail', $registrationMail, function($message, $registrationMail) {
$message->to($registrationMail['email'], $registrationMail['name'].' '.$registrationMail['surname'])->subject('titolo');
});
Делая таким образом $ registrationMail переменная не определена, но при попытке отправить электронное письмо я получаю следующее сообщение об ошибке:
ErrorException in RegistrationController.php line 90:
Missing argument 2 for App\Http\Controllers\RegistrationController::App\Http\Controllers\{closure}()
in RegistrationController.php line 90
at HandleExceptions->handleError(2, 'Missing argument 2 for App\\Http\\Controllers\\RegistrationController::App\\Http\\Controllers\\{closure}()', 'C:\\xampp\\htdocs\\HotelRegistration\\app\\Http\\Controllers\\RegistrationController.php', 90, array('message' => object(Message))) in RegistrationController.php line 90
at RegistrationController->App\Http\Controllers\{closure}(object(Message))
at call_user_func(object(Closure), object(Message)) in Mailer.php line 199
at Mailer->send('emails.registrationMail', array('title' => 'Registrazione albergatore su portale BeTrivius', 'url' => 'http://laravel.dev/[email protected]&token=4759d4ec56cf1e63447638e0d7a042e6', 'email' => '[email protected]', 'name' => 'Andrea', 'surname' => 'Nobili'), object(Closure)) in Facade.php line 221
at Facade::__callStatic('send', array('emails.registrationMail', array('title' => 'Registrazione albergatore su portale BeTrivius', 'url' => 'http://laravel.dev/[email protected]&token=4759d4ec56cf1e63447638e0d7a042e6', 'email' => '[email protected]', 'name' => 'Andrea', 'surname' => 'Nobili'), object(Closure))) in RegistrationController.php line 93
at Mail::send('emails.registrationMail', array('title' => 'Registrazione albergatore su portale BeTrivius', 'url' => 'http://laravel.dev/[email protected]&token=4759d4ec56cf1e63447638e0d7a042e6', 'email' => '[email protected]', 'name' => 'Andrea', 'surname' => 'Nobili'), object(Closure)) in RegistrationController.php line 93
at RegistrationController->store(object(Request))
at call_user_func_array(array(object(RegistrationController), 'store'), array(object(Request))) in Controller.php line 55
at Controller->callAction('store', array(object(Request))) in ControllerDispatcher.php line 44
где линия 90 является:
Mail::send('emails.registrationMail', $registrationMail, function($message, $registrationMail) {
Таким образом, проблема заключается в том, что я не могу передать второй параметр внутренней функции обратного вызова. Зачем?
Как правильно передать адрес электронной почты получателя в эту внутреннюю функцию обратного вызова? Какой самый умный способ сделать это?
Вам нужно добавить переменную в use
часть вашей функции, чтобы отправить его в ту же область.
Например:
Mail::send('emails.registrationMail', $registrationMail, function($message) use($registrationMail) {
$message->to($registrationMail['email'])->subject('titolo');
});
Других решений пока нет …