以下是来自https://github.com/andrewpuch/aws-ses-node-js-examples的代码, 其中有一个示例可以发送和通过电子邮件发送附件,
我修改了代码以从 aws s3 获取图像文件并将其与邮件作为附件一起发送,当我为文本文件执行此操作时,它运行良好,但是当我发送图像时,在邮件中我无法看到图像,因为它已损坏。
当我尝试使用苹果照片应用程序打开时,它显示缺少元数据,我还在邮件标题中添加了 Content-Transfer-Encoding: base64,当我在Content 中尝试使用 utf8、utf-8 和 UTF-8 时-Transfer-Encoding在标题中我从 aws 得到以下响应
{
"message": "Unknown encoding: utf8",
"code": "InvalidParameterValue",
"time": "2017-03-14T08:42:43.571Z",
"requestId": "2e220c33-0892-11e7-8a5a-1114bbc28c3e",
"statusCode": 400,
"retryable": false,
"retryDelay": 29.798455792479217
}
Run Code Online (Sandbox Code Playgroud)
我修改后的代码用于发送带有邮件的图像附件,我什至尝试将缓冲区编码为 utf-8、base-64,在此上浪费了足够的时间,不知道为什么它已损坏,如果有人以前这样做过,请帮助我
// Require objects.
var express = require('express');
var app = express();
var aws = require('aws-sdk');
// Edit this with YOUR email address.
var email = "*******@gmail.com";
// Load your AWS credentials and try to instantiate the object.
aws.config.loadFromPath(__dirname …Run Code Online (Sandbox Code Playgroud) 例如,我是 AWS 控制台的管理员,并且有一个用户 X,我需要与他共享一些我创建的测试 lambda 函数,以便他可以在测试 lambda 函数中进行测试,而不是弄乱生产 lambda 函数,我也这样做不希望 X 看到访问我的 lambda 函数。
但是当我创建一个测试用户并登录到他的控制台时,我无法在他的控制台中看到任何管理功能,下面是我附加到测试用户的自定义策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:*",
"cognito-identity:ListIdentityPools",
"cognito-sync:GetCognitoEvents",
"cognito-sync:SetCognitoEvents",
"dynamodb:*",
"events:*",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"lambda:*",
"logs:*",
"kms:ListAliases"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但同样的事情不会发生在 s3 存储桶上,我已将另一个策略附加到测试用户,用于仅访问测试 s3 存储桶,该策略运行良好,下面是策略说明。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::test"
]
},
{
"Effect": "Allow", …Run Code Online (Sandbox Code Playgroud)