Можно ли отправить содержимое страницы по электронной почте, используя UI5?
Мое приложение предназначено для создания таблицы, которая впоследствии редактируется пользователем. После этого мне нужно подать заявку на отправку содержимого страницы по электронной почте.
Я использовал триггерную электронную почту URLHelper (), но благодаря этому я могу инициировать электронную почту с помощью, cc, subject, text body, но мое приложение ui5 не может вставить таблицу в электронное письмо.
Может кто-нибудь предложить что-нибудь? или это вообще возможно? Я также не буду возражать против использования простого javascript. Дело в том, что мне нужно делать это без использования бэкэнда.
1 ответ
Мы делаем нечто подобное в одном из наших приложений. Я добавил на экран кнопку, которая при нажатии вызывает "mailto" и заполняет почтовый клиент полями to, subject и body. Тело создается как часть сценария. Мы в основном читаем содержимое таблицы в массив, а затем перебираем записи, используя forEach. Помните, что использование mailto или даже URLHelper не позволяет использовать текст в формате HTML в "теле" письма. Так что, если вы ищете что-то красивое, вам может не повезти.
onNotifyUserPress: function(oEvent) {
var oItem = oEvent.getSource();
var oBinding = oItem.getBindingContext();
// Set some vars for the email package
var sEmpEmail = oBinding.getProperty("Smtp");
var sEmpName = oBinding.getProperty("STEXT_2");
var sEmailSubject = "Your Subject " + sEmpName;
// Create DateFormat Object
var oDateFormat = DateFormat.getDateTimeInstance({pattern: "dd/MM/yyyy"});
// Retrieve Table Data
var oTable = this.getView().byId("yourTable");
var aTableData = oTable.getBinding("items").getContexts();
// Build the email body
var sBody = sEmpName + " - Some Body Text\n\n";
sBody += "Field 1 | " + "Field 2 | " + "Field 3 | " + "Field 4" + "\n";
// Loop through table data and build the output for the rest of the email body
aTableData.forEach(function(oModel) {
var oModelData = oModel.getObject();
var sEndDate = oDateFormat.format(oModelData.Vendd);
var sStatus = this._formatStatus(oModelData.ZQ_STAT);
sBody += (oModelData.Essential === "X" ? "Yes" : "No") + " | " + oModelData.Ttext + " | " + sEndDate + " | " + sStatus + "\n";
}.bind(this));
// Open email client window and prepopulate with info
window.open("mailto:" + sEmpEmail + "&subject=" + sEmailSubject + "&body=" + encodeURIComponent(sBody), "_self");
},
Вам, очевидно, нужно обновить код, чтобы он указывал на данные вашей таблицы. В данном конкретном случае у нас есть страница объекта с несколькими разделами. Каждый раздел содержит таблицу, которая загружает список объектов, связанных с пользователем. Поскольку данные уже загружены и существуют в модели, это может не работать так же, как то, что вы пытаетесь сделать (если я правильно понимаю), так как вам нужно отправить электронное письмо после того, как данные введены / изменены?
Надеюсь, это поможет вам начать!
Ура!