我将 AWS 开发工具包版本 2.x 用于 SES。 我想知道电子邮件的验证状态,并在未验证的情况下验证该电子邮件。
收到错误“我们计算的请求签名与您提供的签名不匹配。检查您的 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;
}
此方法用于获取 emailAddress 的验证状态。参数“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;
}