使用AWS SES CLI发送电子邮件附件

时间:2017-08-18 14:42:59

标签: amazon-web-services aws-cli amazon-ses

我正在尝试使用SES CLI发送电子邮件附件,但每次邮件到达并打开附件时我都会在Adobe中收到错误:

  

无法打开文件,因为它不是受支持的文件类型,或者因为文件已损坏。

我正在使用的命令是:

aws ses send-raw-email --raw-message file:///root/AWS/INSPECTOR/message.json

该文件的内容是:

{
   "Data": "From: sender@exmple.com\nTo: recipient@example.com\nSubject: Test email sent using the AWS CLI (contains an attachment)\nMIME-Version: 1.0\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\n\n--NextPart\nContent-Type: text/plain\n\nThis is the message body.\n\n--NextPart\nContent-Type: application/pdf;\nContent-Disposition: attachment; filename=\"report.pdf\";\npath=\"\/tmp\/report.pdf\"\n\n--NextPart--"
}

我在http://docs.aws.amazon.com/cli/latest/reference/ses/send-raw-email.html看到了这个页面但是我的语法不太正确,所以任何帮助都会受到赞赏....

3 个答案:

答案 0 :(得分:1)

附件应以Base64编码形式传递,并在MIME中指定Content-Transfer-Encoding:base64。

这是我回答的上一个线程的链接: Sending aws cli SES as a file attachmennt

答案 1 :(得分:0)

您尝试调整的示例会添加纯文本并将其嵌入到电子邮件中。您正在尝试添加pdf,但是您只是将标题添加到邮件中,但您没有添加pdfs内容。

您还需要嵌入pdf base64编码。

快速搜索此answer到稍微不同的问题“How to embed images in email”可能会帮助您进行嵌入。在这种情况下,您想要嵌入pdf而不是图像。

如果正确准备你的json,它应该与aws-cli一起使用。

答案 2 :(得分:0)

我能够为大学编写一些代码来解决纯文本/文本的相同问题。我确实使用PDF类型尝试了此操作,但不幸的是我无法正常工作,收到的文件似乎已损坏。我认为对于其他文件类型,您必须在base64中对其进行编码,但不确定要与cli一起使用的确切结构。

  

echo'{“ Data”:“发件人:from@domain.com \ n收件人:to@domain.com \ n主题:   [主题] \ nMIME版本:1.0 \ n内容类型:多部分/混合;   boundary = \“ NextPart \” \ n \ n--NextPart \ n内容类型:   文字/纯文字\ n \ n [正文] \ n \ n--NextPart \ n内容类型:   文字/纯文字; \ nContent-Disposition:附件;   filename = \“ test.txt \” \ n \ n'$(cat ./input.txt)'\n--NextPart--“}'>   message.json和aws ses send-raw-email --region eu-west-1 --raw-message   文件://./message.json

基本上,中间的cat命令会将文本写入message.json中,以便它可以是动态的。希望这对某人有帮助。

编辑

感谢@James Dean:

以下是带有PDF附件的示例:

  

echo'{“ Data”:“发件人:from@domain.com \ n收件人:to@domain.com \ n主题:   [主题] \ nMIME版本:1.0 \ n内容类型:多部分/混合;   boundary = \“ NextPart \” \ n \ n--NextPart \ n内容类型:   文字/纯文字\ n \ n [正文] \ n \ n--NextPart \ n内容类型:   application / pdf; \ n内容处置:   附件; \ nContent-Transfer-Encoding:base64;   filename = \“ test.pdf \” \ n \ n'$(base64 test.pdf)'\ n--NextPart--“}'> message.json和aws ses send-raw-email   --region eu-west-1 --raw-message file://./message.json

干杯

Alexei Blue。