我正在尝试使用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"
}`
问题
我是否正确使用了身体贴图?
请问有人可以说明如何实现这一目标吗?任何帮助高度赞赏。
答案 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操作发送带有附件的电子邮件。
我对原始问题的回答:
x-www-form-urelencoded
请求正文。希望这会有所帮助。