SDKを使用してAWSSESAPI経由でメールを送信しようとしています。
私はここの公式ドキュメントに基づいてコードを作成しました: https://docs.aws.Amazon.com/ses/latest/DeveloperGuide/examples-send-using-sdk.html
await client.SendEmailAsync(sendRequest);
まで到達し、エラーメッセージを受け取ります。
EC2インスタンスメタデータサービスから認証情報を取得できませんでした。
// 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();
これは機能しています。ただし、より安全にするために、 共有資格情報ファイル を使用することをお勧めします。
これが他の誰かに役立つことを願っています。