1

我正在为 SES 使用 AWS 开发工具包版本 2.x。我想知道电子​​邮件的验证状态,并在未验证的情况下验证该电子邮件。

收到错误“我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。” 在下面的方法中。

我正在使用这种方法来创建 SesClient 的对象 -

    public static SesClient getClientObject(String accessKeyId, String secretAccessKey, String region) {
    AwsBasicCredentials credential = AwsBasicCredentials.create(accessKeyId, secretAccessKey);
    StaticCredentialsProvider credentialProvider = StaticCredentialsProvider.create(credential);
    SesClient amazonSimpleEmailService = SesClient.builder().credentialsProvider(credentialProvider).region(Region.of(region)).build();
    return amazonSimpleEmailService;
}

以及此方法获取电子邮件地址的验证状态。参数“address”是电子邮件地址。

public static boolean isEmailAddressisVerified(String accessKeyId, String secretAccessKey, String region,
        String address) {
    SesClient ses = getClientObject(accessKeyId, secretAccessKey, region);
    ListVerifiedEmailAddressesResponse verifiedEmails = ses.listVerifiedEmailAddresses();    // getting the above error in this line
    return verifiedEmails.verifiedEmailAddresses().contains(address);
}

而这个方法来验证emailAddress。

    public static Map<String, String> verifyEmailAddress(String accessKeyId, String secretAccessKey, String region,
        String address) {
    Map<String, String> returnMap = new HashMap<>();
    SesClient ses = getClientObject(accessKeyId, secretAccessKey, region);
    ListVerifiedEmailAddressesResponse verifiedEmails = ses.listVerifiedEmailAddresses();
    if (verifiedEmails.verifiedEmailAddresses().contains(address)) {
        return null;
    }
    VerifyEmailAddressResponse result = ses
            .verifyEmailAddress(VerifyEmailAddressRequest.builder().emailAddress(address).build());
    logger.debug("Verify Email Response Metadata {}", result.responseMetadata());
    logger.debug("Verify Email Response Metadata {}", result.responseMetadata().requestId());
    returnMap.put("STATUS", "SUCCESS");
    returnMap.put("AWS_REQUEST_ID", result.responseMetadata().requestId());
    return returnMap;
}
4

0 回答 0