Отправить электронную почту, используя aws ses sdk (Java) из региона Азиатско-Тихоокеанского региона (Мумбаи) - PullRequest
0 голосов
/ 22 марта 2019

Я пытался отправлять электронные письма, используя aws ses java sdk из региона Азиатско-Тихоокеанский регион (Мумбаи).См. Приведенный ниже код, который я пробовал AWSClientService (для получения учетных данных, клиента, создания шаблона и т. Д.)

@Service
public class AWSClientServiceImpl implements AWSClientService {

@Value("${aws.ses.accesKey}")
private String accessKey;

@Value("${aws.ses.secretKey}")
private String secretKey;

@Override
public AWSCredentialsProvider getAWSCredentials(){
    BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey,secretKey);
    return new AWSStaticCredentialsProvider(credentials);
}

@Override
public AmazonSimpleEmailService getAmazonSESClient(){
    return AmazonSimpleEmailServiceClientBuilder.standard()
            .withCredentials(getAWSCredentials())
            .withRegion(Regions.AP_SOUTH_1).build();
}

@Override
public VerifyEmailIdentityResult verifyEmailIdentity(AmazonSimpleEmailService client, String emailAddress){
    VerifyEmailIdentityRequest emailIdentityRequest = new VerifyEmailIdentityRequest().withEmailAddress(emailAddress);
    return client.verifyEmailIdentity(emailIdentityRequest);
}

@Override
public CreateTemplateResult createTemplate(AmazonSimpleEmailService amazonSES, String templateName, String subjectPart, String htmlPart) {
    Template template = new Template();
    template.setTemplateName(templateName);
    template.setSubjectPart(subjectPart);
    template.setHtmlPart(htmlPart);
    CreateTemplateRequest createTemplateRequest = new CreateTemplateRequest();
    createTemplateRequest.setTemplate(template);
    return amazonSES.createTemplate(createTemplateRequest);
}
}

С помощью этого я пытаюсь отправить письмо из другого класса

public void sendSimpleSESMessage(){
    final String FROM = "test@sample.com";
    final String TO = "test@sample.com";
    final String SUBJECT = "Amazon SES test (AWS SDK for Java)";
    final String HTMLBODY = "<h1>Amazon SES test (AWS SDK for Java)</h1>"
            + "<p>This email was sent with <a href='https://aws.amazon.com/ses/'>"
            + "Amazon SES</a> using the <a href='https://aws.amazon.com/sdk-for-java/'>"
            + "AWS SDK for Java</a>";
    final String TEXTBODY = "This email was sent through Amazon SES "
            + "using the AWS SDK for Java.";
    try {
        AmazonSimpleEmailService client = awsClientService.getAmazonSESClient();
        log.info("Email Verification for " + FROM + " started");
        VerifyEmailIdentityResult verifyEmailIdentityResult = awsClientService.verifyEmailIdentity(client, FROM);
        log.info("Email verification for " + FROM + " completed");
        SendEmailRequest request = new SendEmailRequest()
                .withDestination(
                        new Destination().withToAddresses(TO))
                .withMessage(new com.amazonaws.services.simpleemail.model.Message()
                        .withBody(new Body()
                                .withHtml(new Content()
                                        .withCharset("UTF-8").withData(HTMLBODY))
                                .withText(new Content()
                                        .withCharset("UTF-8").withData(TEXTBODY)))
                        .withSubject(new Content()
                                .withCharset("UTF-8").withData(SUBJECT)))
                .withSource(FROM);
        client.sendEmail(request);
        log.info("Email was sent from "+FROM+" to "+TO);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

Когдапопытаться выполнить этот метод, я получил исключение

com.amazonaws.SdkClientException: невозможно выполнить запрос HTTP: подключиться к email.ap-south-1.amazonaws.com:443 [email.ap-south-1.amazonaws.com/13.126.113.212, email.ap-south-1.amazonaws.com/35.154.131.193, email.ap-south-1.amazonaws.com/13.126.245.211] не удалось: время соединения истекло

В чем может быть причина?Это из-за того, что я использовал регион Азиатско-Тихоокеанский регион (Мумбаи)?Если да, какой регион мне использовать?Как я индиец, могу ли я использовать другие регионы?Я новичок в AWS SES.Пожалуйста, помогите мне

Ответы [ 3 ]

0 голосов
/ 22 марта 2019

Я сменил регион на Восток США (Северная Вирджиния), потом все заработало.Убедитесь, что брандмауэр не заблокирован

0 голосов
/ 27 марта 2019

SES доступен только в 3 регионах.США-Восток-1, ЕС-Запад-1 и США-Запад-2 https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region

0 голосов
/ 22 марта 2019

Ваша конечная точка отсутствует в списке регионов AWS и списка конечных точек. Вы уверены, что соединяетесь с реальной конечной точкой? Вы проверяли, заблокирован ли вы брандмауэром?

Ссылка: https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...