E-mails AWS SNS OTP

Dec 24 2020

Estou trabalhando no envio de mensagens OTP para login de usuário aproveitando o Amazon SNS. Consigo enviar mensagem de texto como sugerido aqui . Também para a notificação por e-mail, gostaria de usar uma abordagem semelhante. Mas parece que para notificações por email, um tópico deve ser criado no SNS e um assinante deve ser criado para cada id de email registrado no aplicativo.

Não é possível enviar e-mail para mail-id dinamicamente como feito para mensagens de texto sem criar tópicos e assinantes? Caso contrário, sugira uma maneira de definir a id do e-mail dinamicamente com base no usuário logado.

Código para mensagens de texto:

 public static void main(String[] args) {
    AmazonSNSClient snsClient = new AmazonSNSClient();
    String message = "My SMS message";
    String phoneNumber = "+1XXX5550100";
    Map<String, MessageAttributeValue> smsAttributes = 
            new HashMap<String, MessageAttributeValue>();
    //<set SMS attributes>
    sendSMSMessage(snsClient, message, phoneNumber, smsAttributes);
 }
 public static void sendSMSMessage(AmazonSNSClient snsClient, String message, 
    String phoneNumber, Map<String, MessageAttributeValue> smsAttributes) {
    PublishResult result = snsClient.publish(new PublishRequest()
                    .withMessage(message)
                    .withPhoneNumber(phoneNumber)
                    .withMessageAttributes(smsAttributes));
    System.out.println(result); // Prints the message ID.
 }

Respostas

2 JohnRotenstein Dec 24 2020 at 17:26

Correto.

O Amazon SNS normalmente usa um modelo Público / Assinar para mensagens.

A única exceção é a capacidade de enviar uma mensagem SMS a um destinatário específico.

Se desejar enviar um e-mail para um único destinatário, você precisará usar seu próprio servidor SMTP ou usar o Amazon Simple Email Service ( Amazon SES ).