【问题标题】:Node.js SparkPost Not able to send attachments via transmission APINode.js SparkPost 无法通过传输 API 发送附件
【发布时间】:2021-06-04 12:14:01
【问题描述】:

我正在使用 Node.js 和 Axios 通过 SparkPost 传输 API 发送电子邮件。 我能够成功获取电子邮件,但是,我无法获取附件。 Spark Post 文档说我们可以使用 content.attachments 获取附件文件,但我仍然能够获取邮件,但没有收到预期的附件文件。

下面附上sn-p的代码:

  static async sendModelReport() {
const data = {
  content: {
    template_id: process.env.emailTemplate,
    attachments: [{
      name: 'report.pdf',
      type: 'application/pdf',
      data: 'Q29uZ3JhdHVsYXRpb25zLCB5b3UgY2FuIGJhc2U2NCBkZWNvZGUh',
    }], // taken from example and tried others too.
  },
  recipients: [{
    address: process.env.internalEmail,
    substitution_data: {
      environment: process.env.NODE_ENV,
    },
  }],
};
try {
  const response = await axios({
    method: 'post',
    url: `${process.env.emailServiceBaseURL}/api/v1/transmissions`,
    data,
    headers: {
      'Content-Type': 'application/json',
      Authorization: process.env.emailServiceKey,
    },
  });
  if (response.data && response.data.results) {
    return response.data.results;
  }
} catch (error) {
  console.log(error.response.data);
  throw new Error(`Email Service Error: ${error.message}`);
}

}

【问题讨论】:

    标签: node.js sparkpost


    【解决方案1】:

    事实证明 spark post 不支持发送带有存储模板的附件。一种解决方法是我们可以获取存储的模板并使用该模板 html 发送邮件。

    async sendModelReport() {
    // Update code start
    const getTemplateResponse = await retrieveTemplate(templateId);
    getTemplateResponse.content.attachments = attachments: [{
          name: 'report.pdf',
          type: 'application/pdf',
          data: 'Q29uZ3JhdHVsYXRpb25zLCB5b3UgY2FuIGJhc2U2NCBkZWNvZGUh',
        }];
    const data = {
      content: getTemplateResponse.content,
    // Updated code end
      recipients: [{
        address: process.env.internalEmail,
        substitution_data: {
          environment: process.env.NODE_ENV,
        },
      }],
    };
    try {
      const response = await axios({
        method: 'post',
        url: `${process.env.emailServiceBaseURL}/api/v1/transmissions`,
        data,
        headers: {
          'Content-Type': 'application/json',
          Authorization: process.env.emailServiceKey,
        },
      });
      if (response.data && response.data.results) {
        return response.data.results;
      }
    } catch (error) {
      console.log(error.response.data);
      throw new Error(`Email Service Error: ${error.response.data}`);
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 2021-09-18
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多