Я хотел бы создать электронное письмо из веб-приложения Javascript. Я полностью осведомлен о многих вопросах SO по этому вопросу (например, Open Outlook HTML with Chrome). Есть проблемы с типичными ответами:Используйте Javascript для создания электронной почты HTML в Microsoft Outlook
Mailto: ссылка: Это позволит создать электронную почту, но только в виде простого текста (без HTML), и это не позволяет вложений.
ActiveX: только IE, мое приложение также должно запускаться в Firefox и Chrome. FF & Chrome-плагины, позволяющие ActiveX представлять угрозу безопасности и кажутся ошибками.
Серверные сообщения отправляются через SMTP: письмо не попадает в папку «Отправлено» для пользователя. Плюс препятствия, позволяющие пользователю редактировать HTML в браузере и прикреплять файлы.
Создание файла Outlook .MSG: Кажется, нет библиотек и мало написано об этом. По-видимому, в файловом формате имеется встроенная система хранения файлов FAT.
Основные отличия между многими другими SO вопросы и шахты:
- Я сделать имеют доступ к клиентским машинам, так что я мог установить вспомогательные приложения или надстроек, изменение параметров при необходимости и т. д.
- Интерфейс не необходимо отправить по электронной почте, ему нужно только , чтобы настроить его для пользователя.
- Мне также нужно указать электронное письмо от JS (например, PDF).
Я не могу быть первым разработчиком веб-приложений, которому стоит столкнуться с этим, и все же я не могу найти решение как коммерческого, так и открытого источника.
Update:
Я использовал метод файла EML и он хорошо работает до сих пор. Вот мой JS код, чтобы создать и запустить его: формат файла
var emlContent = "data:message/rfc822 eml;charset=utf-8,";
emlContent += 'To: '+emailTo+'\n';
emlContent += 'Subject: '+emailSubject+'\n';
emlContent += 'X-Unsent: 1'+'\n';
emlContent += 'Content-Type: text/html'+'\n';
emlContent += ''+'\n';
emlContent += htmlDocument;
var encodedUri = encodeURI(emlContent); //encode spaces etc like a url
var a = document.createElement('a'); //make a link in document
var linkText = document.createTextNode("fileLink");
a.appendChild(linkText);
a.href = encodedUri;
a.id = 'fileLink';
a.download = 'filename.eml';
a.style = "display:none;"; //hidden link
document.body.appendChild(a);
document.getElementById('fileLink').click(); //click the link
Ваш вопрос несколько неоднозначна. Ваше название и теги указывают, что вы хотите использовать JavaScript, но ваши «ключевые различия» указывают, что вы можете использовать вспомогательные приложения и надстройки, которые не являются (обязательно) JavaScript. Похоже, вы хотите, чтобы мы немного искали вас, чтобы найти решение, которое, как правило, плохо подходит для SO. –
... но я бы использовал JavaScript для создания сообщения и все, что было необходимо для взаимодействия с неизвестным решением. Я охотился на высоких и низких для решения. Я не просил никого больше искать меня, я спросил, есть ли у кого-то подход, о котором я не думал. –
Мне нравится подход, он придерживается правил песочницы браузера (пользователю не нужно открывать загружаемый EML-файл), пока он появляется, чтобы дать именно то, что нужно. Я обязательно найду использование этой техники! – Falkayn