【问题标题】:AWS - API gateway & Simple Email ServiceAWS - API 网关和简单电子邮件服务
【发布时间】:2018-11-08 02:45:35
【问题描述】:

我正在尝试使用 SES 和 API 网关触发电子邮件,而不使用 Lambda 函数。它将包含pdf文件和文本。我可以使用 QueryString 参数触发电子邮件,但由于我需要发送文件,所以我也想从正文进行映射。在 API 网关中尝试了身体映射,如下所示,

身体映射模板 { 'Destination': { ToAddresses:'xxxx@example.com' }, 'Message': { 'Body': { 'Text': { 'Data': 'message body ! hurray !!!', 'Charset': 'UTF-8' } }, 'Subject': { 'Data': 'subject data', 'Charset': 'UTF-8' } }, 'Source': 'yyy@example.com' }

SES 的回应

`{
  "Output": {
  "__type": "com.amazon.coral.service#SerializationException",
  "Message": null
 },
 "Version": "1.0"
 }`

问题

  1. 是否可以不使用 lambda 实现这一目标?
  2. 我是否正确使用了身体映射?

    有人可以说明如何实现这一目标吗?任何帮助都非常感谢。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-ses


    【解决方案1】:

    我遇到了同样的问题,终于成功了。我会分享我学到的。

    根据this document,请求正文应为x-www-form-urlencoded,如:

    Action=SendRawEmail
    &Destinations.member.1=allan%40example.com
    &RawMessage.Data=RnJvbTp1c2VyQGV4YW1wbGUuY29tDQpTdWJqZWN0OiBUZXN0DQoNCk1lc3 ...
    

    您还必须设置Content-Type:application/x-www-form-urlencoded 标头。如果不是,则会导致异常。使用此标头,您无法发送带有查询参数的请求(因为它包含?),您还必须在 API 网关控制台的集成请求部分中将“操作类型”设置为“使用路径覆盖”和“/”。

    我还确认我可以使用 SendRawEmail 操作发送带有附件的电子邮件。

    所以我对原始问题的回答:

    1. 是否可以在不使用 lambda 的情况下实现这一目标? => 是的!
    2. 我是否正确使用了身体映射? => 不,您必须使用 x-www-form-urelencoded 请求正文。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多