簡體   English   中英

無法使用 Regions.AP_SOUTH_1 在 Android 上使用 AWS SES 發送原始 email

[英]Failed to use Regions.AP_SOUTH_1 sending raw email with AWS SES on Android

我使用以下 java 代碼發送用戶電子郵件,如果我使用 Regions.US_EAST_1 和相關的身份池 ID,它會按預期工作。

AmazonSimpleEmailServiceAsyncClient client = new AmazonSimpleEmailServiceAsyncClient(new CognitoCachingCredentialsProvider(context, identityPoolId, Regions.AP_SOUTH_1));
client.setRegion(Region.getRegion(Regions.AP_SOUTH_1));
client.sendRawEmailAsync(new SendRawEmailRequest(rawMessage), new AsyncHandler<SendRawEmailRequest, SendRawEmailResult>()
{
    @Override
    public void onError(Exception exception)
    {
        exception.printStackTrace();
    }

    @Override
    public void onSuccess(SendRawEmailRequest request, SendRawEmailResult sendEmailResult)
    {
    }
});

但是在我將區域更改為AP_SOUTH_1后,我也更改了身份池 id,代碼停止工作,email 不會發送,我開始看到日志說

com.amazonaws.AmazonServiceException:請求中包含的安全令牌無效。 (服務:AmazonSimpleEmailService;狀態代碼:403;錯誤代碼:InvalidClientTokenId;請求 ID:1168c9c2-a940-4bef-be36-8568787bc130)

為什么 US_EAST_1 有效但 AP_SOUTH_1 無效? 如何讓區域 AP_SOUTH_1 工作? 如何識別並解決此問題?

重要提示:我已經在兩個地區驗證了發件人 email 地址。 我已授予角色 ses:sendRawEmail 權限。

我想發布我 2 天的調查並發現可以幫助他人:

經測試

  • 適用於 Android 的 AWS SDK:

使用最新的adk implementation 'com.amazonaws:aws-android-sdk-ses:2.16.12' ,只能使用us-east-1, us-west-2, eu-west-1 3個區域發送成功生產中的電子郵件,不幸的是 ap-south-1 不在列表中,即使 SES 控制台頁面顯示您可以使用更多區域,如果您通過代碼執行此操作,您將始終收到 AmazonServiceException 說The security token included in the request is invalid.

  • 適用於 Java 的 AWS SDK:

使用最新的 adk implementation 'com.amazonaws:aws-java-sdk-ses:1.11.789' ,用戶可以使用區域 ap-source-1 發送原始電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM