Как я могу динамически передать адрес электронной почты получателя во внутреннюю функцию обратного вызова Mail :: send ()?

Я новичок в 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) {

Таким образом, проблема заключается в том, что я не могу передать второй параметр внутренней функции обратного вызова. Зачем?

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

0

Решение

Вам нужно добавить переменную в use часть вашей функции, чтобы отправить его в ту же область.

Например:

Mail::send('emails.registrationMail', $registrationMail, function($message) use($registrationMail) {
$message->to($registrationMail['email'])->subject('titolo');
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]