Я рассмотрел другие вопросы о SO, у всех из них нет SES и Java в рамках их вопроса.ПодписьDoesNotMatch, Подписанная вами подпись запроса не соответствует подписи, которую вы предоставили
Исключение
Exception in thread "main" com.amazonaws.AmazonServiceException: Status Code: 403, AWS Service: AmazonSimpleEmailService, AWS Request ID: 6828fb27-8972-11e3-9700-b705133266ce, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:773)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:417)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:229)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.invoke(AmazonSimpleEmailServiceClient.java:1254)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.listVerifiedEmailAddresses(AmazonSimpleEmailServiceClient.java:296)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.listVerifiedEmailAddresses(AmazonSimpleEmailServiceClient.java:1132)
at com.mcruiseon.server.amazonses.test.AWSJavaMailSample.verifyEmailAddress(AWSJavaMailSample.java:169)
at com.mcruiseon.server.amazonses.test.AWSJavaMailSample.main(AWSJavaMailSample.java:84)
Исходный код
public class AWSJavaMailSample {
private static final String TO = "[email protected]";
private static final String FROM = "[email protected]";
private static final String BODY = "Hello World!";
private static final String SUBJECT = "Hello World!";
public static void main(String[] args) throws IOException {
AWSCredentials credentials = new ClasspathPropertiesFileCredentialsProvider()
.getCredentials();
AmazonSimpleEmailService ses = new AmazonSimpleEmailServiceClient(
credentials);
Region usWest2 = Region.getRegion(Regions.US_EAST_1);
ses.setRegion(usWest2);
verifyEmailAddress(ses, FROM);
// verifyEmailAddress(ses, TO);
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "aws");
props.setProperty("mail.aws.user", "ses-smtp-user.some_number") ;
props.setProperty("mail.aws.password", "password_setup_for_this_user");
Session session = Session.getInstance(props);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(FROM));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(TO));
msg.setSubject(SUBJECT);
msg.setText(BODY);
msg.saveChanges();
Transport t = new AWSJavaMailTransport(session, null);
t.connect();
t.sendMessage(msg, null);
t.close();
} catch (AddressException e) {
e.printStackTrace();
System.out
.println("Caught an AddressException, which means one or more of your "
+ "addresses are improperly formatted.");
} catch (MessagingException e) {
e.printStackTrace();
System.out
.println("Caught a MessagingException, which means that there was a "
+ "problem sending your message to Amazon's E-mail Service check the "
+ "stack trace for more information.");
}
}
private static void verifyEmailAddress(AmazonSimpleEmailService ses,
String address) {
ListVerifiedEmailAddressesResult verifiedEmails = ses
.listVerifiedEmailAddresses();
if (verifiedEmails.getVerifiedEmailAddresses().contains(address))
return;
ses.verifyEmailAddress(new VerifyEmailAddressRequest()
.withEmailAddress(address));
System.out.println("Please check the email address " + address
+ " to verify it");
System.exit(0);
}
}
SES Setup
- Добавлено myproductdomain.com Домены.
- Добавлено [email protected] в адрес электронной почты.
AwsCredentials.properties
- Для SecretKey = "AWS сайт логин пароль"
- Для Accesskey = "https://console.aws.amazon.com/iam/home#users , учетные данные безопасности, для ses-smtp-user.some_number, ключ доступа "
Я пробовал« мир привет »SES из плагина eclipse. Должно было работать прямо из коробки.