是否可以将表格从模板传递到电子邮件正文?

时间:2019-04-01 18:21:47

标签: angular ionic-framework ionic4

我必须将数据从模板传递到电子邮件正文。有可能还是我该如何解决?

我有此列表

<ion-list>
      <ion-item>
        <ion-row>
          <ion-col size="3">
            <label>MARCA</label>
          </ion-col>
          <ion-col size="4">
            <label>PRODUCTO</label>
          </ion-col>
          <ion-col size="3">
            <label>PRESENT.</label>
          </ion-col>
          <ion-col size="2">
            <label>CANT.</label>
          </ion-col>
        </ion-row>
      </ion-item>
      <ion-item *ngFor="let producto of productos">
          <ion-row>
            <ion-col size="3">
              <label>{{ producto.marca }}</label>
            </ion-col>
            <ion-col size="4">
              <label>{{ producto.producto }}</label>
            </ion-col>
            <ion-col size="3">
              <label>{{ producto.presentacion }}</label>
            </ion-col>
            <ion-col size="2">
              <label{{ producto.cantidad }}</label>
            </ion-col>
          </ion-row>
      </ion-item>
</ion-list>

Result of the table

我想将此表传递给电子邮件正文,我正在使用社交共享插件发送电子邮件:

this.socialSharing.canShareViaEmail().then(() => {
        this.socialSharing.shareViaEmail(
        'HERE COMES THE BODY AND I WANT TO PUT HERE THE ion-list',
        'Subject',
        ['example@hotmail.com']).then(() => {
            // Success!
        });
      });

This is the plugin example!
this.socialSharing.shareViaEmail('Body', 'Subject', ['recipient@example.org']).then(() => {
  // Success!
})

1 个答案:

答案 0 :(得分:1)

因此,我认为这不像将转换后的离子组分表输出到电子邮件友好的html模板中那么简单。但是您肯定可以创建一个帮助脚本来帮助您完成此任务。

如果您事先了解电子邮件的结构,则很容易创建一个简单的脚本,该脚本将遍历您的邮件并将其填充到所需的电子邮件模板中。

我不会编写所有代码,但以下是我过去所做的事情的简要说明:


createHtmlTableRow = (producto) => `
          <tr>
            <td size="3">
              <label>${producto.marca}</label>
            </td>
            <td size="4">
              <label>${producto.producto}</label>
            </td>
            <td size="3">
              <label>${producto.presentacion}</label>
            </td>
            <td size="2">
              <label>${producto.cantidad}</label>
            </td>
          </tr>`;

createHtmlTemplate = (products) => {
    let emailTemplate: string = `<table>
      <thead>
        <tr>
          <th>
            <label>MARCA</label>
          </th>
          <th>
            <label>PRODUCTO</label>
          </th>
          <th>
            <label>PRESENT.</label>
          </th>
          <th>
            <label>CANT.</label>
          </th>
        </tr>
      </thead>
      <tbody>`;

    for (let product of products) {
        emailTemplate += this.createHtmlTableRow(product);
    }

    emailTemplate += '</tbody></table>';

    return emailTemplate;
}

...

this.socialSharing.canShareViaEmail().then(() => {
    this.socialSharing.shareViaEmail(this.createHtmlTemplate(producto), 'Subject', ['example@hotmail.com']).then(() => {
        // Success!
    });
});