AWS - API网关&简单邮件服务

时间:2018-01-31 07:16:49

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

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

BODY MAPPING TEMPLATE     { '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. 我是否正确使用了身体贴图?

    请问有人可以说明如何实现这一目标吗?任何帮助高度赞赏。

1 个答案:

答案 0 :(得分: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请求正文。

希望这会有所帮助。