Можно ли отправить содержимое страницы по электронной почте, используя 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");
    },

Вам, очевидно, нужно обновить код, чтобы он указывал на данные вашей таблицы. В данном конкретном случае у нас есть страница объекта с несколькими разделами. Каждый раздел содержит таблицу, которая загружает список объектов, связанных с пользователем. Поскольку данные уже загружены и существуют в модели, это может не работать так же, как то, что вы пытаетесь сделать (если я правильно понимаю), так как вам нужно отправить электронное письмо после того, как данные введены / изменены?

Надеюсь, это поможет вам начать!

Ура!

Другие вопросы по тегам