Как остановить htmlentites при использовании summernote и laravel для отправки электронной почты в формате html?

У меня проблема с Laravel 5.1 и Summernote. Я использую summernote для составления электронного письма, которое я отправляю через angular.js в API laravel 5.1.

Я отлаживал столько, сколько мог, но я не могу заставить электронную почту отправлять в коде HTML, который отображается правильно.

Источник сообщения правильно показывает, что электронная почта отправляется в формате HTML, но каким-то образом тело электронной почты продолжает преобразовываться в htmlentities, а затем код HTML отображается в теле электронной почты при получении.

Моя команда отправки почты в Laravel выглядит следующим образом.

$params = json_decode(file_get_contents('php://input'),true);
$body = $params['body'];

$to_address = $params['to'];
$subject = $params['subject'];

Mail::send(['html' => 'emails.send_email'], ['body'=>$body], function ($message) use ($to_address, $subject){
        $message->from($to_address);
        $message->subject($subject);
        $message->to($to_address);

});

Основной текст текста, который я попробовал в SummerNote, выглядит просто:

Test

Test

Который проходит как

test<br>test

В источнике сообщения есть это, что приводит меня к проблеме htmlentities.

Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<body>
test&lt;br&gt;&lt;br&gt;test&lt;br&gt;
</body>

Код Angular.js для сбора сведений о летней заметке

sendEmail($scope.to, $scope.subject, $scope.body).then(function(){
            // Clear out the compose
            $scope.subject = '';
            $scope.body = '';

            $scope.success_message_sent = true;
        }); 

Тогда функция отправки

    $scope.sendEmail = function(to, subject, body) {

    var deferred = $q.defer();

    var data = {
        'to': to,
        'subject': subject,
        'body': body
    };

    $http.post('http://'+ remoteServer +'/api/send_email', data)
        .success(function() { deferred.resolve(); })
        .error(function() { deferred.reject("Failed to send message");
    }); 

    return deferred.promise;

Я использую Mandrill для отправки электронной почты.

Будем очень благодарны любой помощи.

Спасибо


person Brent R    schedule 30.07.2015    source источник
comment
я не уверен, что это проблема laravel. Пожалуйста, почему вы делаете это file_get_contents('php://input') и не используете методы запроса laravel, такие как Input::get('summernote_name')   -  person Emeka Mbah    schedule 30.07.2015
comment
Привет, спасибо за ответ. Я изменил на Input::get. Когда я отлаживаю значение в laravel (php), я вижу правильный формат. Это наряду с запуском Html::decode и т. д. Однако я не сбрасываю со счетов причину Summernote / angular.js. Пытаюсь выяснить, как я могу протестировать/отладить в angular или summernote, чтобы попытаться решить эту проблему.   -  person Brent R    schedule 30.07.2015
comment
Можете ли вы попробовать dd(Input::get('summernote_name')) и посмотреть, что на самом деле отправлено?   -  person Emeka Mbah    schedule 30.07.2015
comment
Привет, я понял, тест‹br›тест‹br›   -  person Brent R    schedule 30.07.2015
comment
Отлично. это означает, что проблема не в Summernote или angularjs. Я думаю, что проблема связана с вашим почтовым шаблоном. не забудьте использовать {!! $body !!} для вывода сообщения в шаблоне   -  person Emeka Mbah    schedule 30.07.2015
comment
Нет проблем с вашим кодом angularjs и summernote. Вы проверили свой шаблон электронной почты, как я предложил? Также используйте Mail::send('emails.send_email', ...   -  person Emeka Mbah    schedule 30.07.2015
comment
Спасибо, совсем пропустил шаблон письма! Ты молодец, разобрался ;)   -  person Brent R    schedule 31.07.2015


Ответы (1)


Я считаю, что эта проблема исходит из вашего шаблона:

В вашем emails.send_email.blade.php используйте {!! $body !!} для предотвращения проблемы с htmlentities

person Emeka Mbah    schedule 30.07.2015
comment
Привет, я использую угловую форму со значением summernote, полученным из привязки ng-modal. Затем я отправляю электронное письмо через $http. Так что не используйте laravel для композитора. Я надеялся найти что-то подобное для привязки Angular ng-modal, потому что симптом кажется идентичным. - person Brent R; 30.07.2015
comment
можете ли вы добавить код angularjs для отправки почты в свой вопрос. - person Emeka Mbah; 30.07.2015
comment
Это добавлено к вопросу. Спасибо ;) - person Brent R; 30.07.2015
comment
Извините, что неправильно прочитал ваш предыдущий совет. Я думал о шаблоне создания, а не о самом электронном письме! Отсортировано спасибо! - person Brent R; 31.07.2015