我正在尝试使用SDK通过AWS SES API发送电子邮件。

我的代码基于此处的官方文档:https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-using-sdk.html

我正在到达await client.SendEmailAsync(sendRequest);并收到错误消息:


// initialization
var client = new AmazonSimpleEmailServiceClient(RegionEndpoint.USWest2);
var response = new SendEmailResponse();

// build email
var sendRequest = new SendEmailRequest
{
    Source = ToAddress,
    Destination = new Destination
    {
        ToAddresses =
        new List<string> { ReceiverAddress }
    },
    Message = new Message
    {
        Subject = new Content(model.Subject),
        Body = new Body
        {
            Html = new Content
            {
                Charset = "UTF-8",
                Data = model.HtmlBody
            },
        }
    },
};

// send async call to api
try
{
    var response = await client.SendEmailAsync(sendRequest);
}
catch (Exception ex)
{

}

我已经确认我的域已通过AWS控制台进行了验证,并且也显示为“已启用发送”。

我要去哪里错了?

最佳答案

我想出了我的问题的答案。

通过创建IAM用户组和有权访问SES服务的用户,可以解决此问题。

然后,我编辑了代码以传递AccessKeyId和SecretAccessKey。

    var client = new AmazonSimpleEmailServiceClient(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USWest2);
    var response = new SendEmailResponse();

这正在工作。但是,为了更加安全,建议使用Shared Credentials File

希望这对其他人有帮助。

编辑:
在AWS SES SDK的V2中,您需要将AmazonSimpleEmailServiceClient更改为AmazonSimpleEmailServiceV2Client
    var client = new AmazonSimpleEmailServiceV2Client(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USWest2);
    var response = new SendEmailResponse();

关于c# - 无法从EC2实例元数据服务检索凭证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50826093/

10-11 08:57
查看更多