2015-11-17 3 views
1

Под Laravel 5 я пытаюсь отправить почту для пользователя с этим ниже маршрута:Laravel параметра передачи по электронной почте страницы

Route::post('/sendEmailToUser', array(
    'as' => 'sendEmailToUser', function() { 
     $data = \App\User::find(Request::input('user_id')); 
     $cdata = array('message' => Request::input('message'), 'email' => $data->email); 

     Mail::send('emails.custom_email_to_user', $cdata, function ($message) use ($data) { 
      $message->to($data['email'], 'Sample')->subject('Sample'); 
     }); 

     if (count(Mail::failures()) > 0) { 
      Log::emergency("email dont send to user"); 
      return 0; 
     } else { 
      Log::info("email successfull send to user id" + Request::input('user_id')); 
      return 1; 
     } 
    } 
)); 

Результатом $cdata является:

Array 
(
    [message] => this is test mail 
    [email] => [email protected] 
) 

К сожалению, я получаю эту ошибку:

htmlentities() expects parameter 1 to be string, object given (View: D:\xampp\htdocs\epay-pro\resources\views\emails\custom_email_to_user.blade.php) 

Моей простая страница электронной почты:

<!DOCTYPE html> 
<html lang="en-US"> 
    <head> 
     <meta charset="utf-8"> 
    </head> 
    <body> 
     <h2>Sample</h2> 
     <div> 
      {{$message}} 
      {{ URL::to('www.epay.li') }}<br/> 
     </div> 
    </body> 
</html> 

ответ

0

Вы должны изменить две вещи в вашем коде, и он будет работать.

  1. Первое: (выбрать, как использовать переменные $ данных)

    Вы используете то же переменную $data иногда array, а иногда object:

    В качестве объекта в:

    $cdata = array('message' => Request::input('message'), 'email' => $data->email); 
    

    Как массив в:

    $message->to($data['email'], 'Sample')->subject('Sample'); 
    

    Обычно вы должны использовать его в качестве object поскольку User::find будет возвращать объект. Примечание:, если вы хотите использовать его как массив, вы должны только добавить toArray() после find.

  2. Второй: (изменить переменный $ имя сообщения)

    Примечания: Вид переменное сообщения $ всегда передаются по электронной почте, а также позволяет инлайн вложения вложений. Таким образом, вы должны избегать передачи переменной сообщения в свою полезную нагрузку.

    Source : Document laravel 5.1 - mail#introduction

    Таким образом, вы должны изменить $message имя переменной, поскольку Framework будет рассматривать его как объект класса Осветите \ почта \ Message.

Надеется, что это помогает.

0

При отправке электронной почты переменной $ message, похоже, противоречит переменной larvels $ message, я не совсем уверен, почему. В вашем $ CDATA вместо message ключа используйте что-то другое, как, может быть, $text

$cdata = array('text' => Request::input('message'), 'email' => $data->email); 
Смежные вопросы