Извините, если это повторяющийся вопрос, но я не нашел подходящего решения.
У меня есть представление в AngularJs (с диаграммами и данными отчета), и мне нужно отправить это же представление по электронной почте. Для этого мне нужно отправить его в BackEnd (PHP) и использовать этот элемент DOM в качестве содержимого электронной почты.
Я пробую это
ReportService.js
self.sendEmail = function(element) {
return Restangular.oneUrl('mailer', 'http://localhost/send-email/').post(null,
{
element: element
});
}
Controller.js
self.print = function () {
email = document.getElementById('email');
self.reportService.sendEmail(email)
.then(function(data){
console.info(data);
});
}
Но сервер ничего не получает в данных POST



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете получить доступ к html в элементе с помощью innerHtml(). Но это не будет соответствовать вашим требованиям, так как вы не получите необходимых стилей и js-кода, которые требуются для отображения вашего отчета. Все стили в почтовом содержимом должны быть только в сети, иначе клиент emai не отобразит их должным образом.
Вы можете использовать Html2Canvas и сделать снимок HTML. Это похоже на снимок экрана, поэтому все ваши стили также будут захвачены. Но получать html от клиента для внутренних операций - не лучшая идея.
https://html2canvas.hertzen.com/
Редактировать:
Другой подход - отправить весь html-документ (со всем, что требуется) на php со встроенными стилями. метод показан по ссылке ниже.
https://css-tricks.com/sending-nice-html-email-with-php/
Спасибо за вашу помощь. Я полагаю, что при передаче его на холст функциональность привязок HTML теряется, но можно ли добавить эту функциональность позже?
Я не знаю PHP, но вам, возможно, придется добавить ссылку на него позже, используя PHP. Что-то вроде накладки. Но подождите ... Почему бы не попробовать этот css-tricks.com/sending-nice-html-email-with-php отправить весь html-документ со встроенными стилями на php и создать электронную почту, как показано в ссылке выше. Отредактировал ответ
Я собираюсь попробовать, но это должен быть HTML-код, отображаемый в представлении, так как у меня есть выполненный JS, который показывает некоторые диаграммы. Кроме того, пользователь может изменить некоторые данные перед отправкой электронного письма.
Понял. для диаграммы вам обязательно нужно преобразовать их в холст или изображение. посмотрите, поддерживает ли ваша библиотека графиков экспорт изображений, которые вы можете отправить в Backend.
Все свойства объектов элементов DOM - неисчислимый. Таким образом, они не отправляются с запросами POST.