Java 发送确认电子邮件、SQS或SNS aws?

Java 发送确认电子邮件、SQS或SNS aws?,java,email,amazon-web-services,message-queue,Java,Email,Amazon Web Services,Message Queue,我有一个web应用程序,用户可以在其中注册。 我需要向他们发送一封确认电子邮件(最终还有一封短信),在这种情况下,将SQS与beanstalk worker进程或SNS结合使用会更好吗 SNS和SES有时会混淆用例。正如名字所说,SNS用于通知,可以通过电子邮件、推送通知、短信和其他方式,而SES仅用于电子邮件 对于SNS,用户应该订阅一个主题,并在该主题更新时接收该主题的更新。因此,对于SNS,他需要确认hist订阅才能接收来自该主题的电子邮件。在SES中,用户可以接收交易或促销电子邮件,这是

我有一个web应用程序,用户可以在其中注册。
我需要向他们发送一封确认电子邮件(最终还有一封短信),在这种情况下,将SQS与beanstalk worker进程或SNS结合使用会更好吗


SNS和SES有时会混淆用例。正如名字所说,SNS用于通知,可以通过电子邮件、推送通知、短信和其他方式,而SES仅用于电子邮件

对于SNS,用户应该订阅一个主题,并在该主题更新时接收该主题的更新。因此,对于SNS,他需要确认hist订阅才能接收来自该主题的电子邮件。在SES中,用户可以接收交易或促销电子邮件,这是您的用例

一个好方法是使用AWS Lambda在用户注册时向其发送一封带有SES的确认电子邮件

要使用SES发送电子邮件而不要求用户注册,首先需要创建AWS支持票证以增加使用限制。然后,您只需注册发件人电子邮件

之后,创建一个AWS Lambda函数并添加一个角色,允许它使用SES发送电子邮件,下面是使用SES和Lambda与node.js发送电子邮件的示例代码:

var AWS = require('aws-sdk');

exports.handler = (event, context, callback) => {

    var ses = new AWS.SES({
        apiVersion: '2010-12-01'
    });

    var email = event['email'];
    var email_text = '<body><h5>Hello, World!</h5></body>';

    ses.sendEmail({
            Source: 'My Email <myemail@example.com>',
            Destination: {
                ToAddresses: [email]
            },
            Message: {
                Body: {
                    Html: {
                        Data: email_text
                    },
                    Text: {
                        Data: email_text
                    }
                },
                Subject: {
                    Data: 'Confirmation'
                }
            }

        }, function (err, data) {
            if (err) {
                callback(null, err);
            } else {
                callback(null, 'ok');
            }

        });
}
var AWS=require('AWS-sdk');
exports.handler=(事件、上下文、回调)=>{
var ses=新的AWS.ses({
apiVersion:'2010-12-01'
});
var email=事件['email'];
var email_text='Hello,World!';
ses.sendEmail({
来源:“我的电子邮件”,
目的地:{
收件人:[电子邮件]
},
信息:{
正文:{
Html:{
数据:电子邮件文本
},
正文:{
数据:电子邮件文本
}
},
主题:{
数据:“确认”
}
}
},函数(错误,数据){
如果(错误){
回调(null,err);
}否则{
回调(null,'ok');
}
});
}

如果以后您需要发送SNS进行任何形式的更新,那么您应该让用户订阅SNS主题并使用该服务。

这取决于您将发送的电子邮件数量。如果有很多电子邮件,那么最好将这些电子邮件放到SQS队列中进行处理。然后,工作人员可以从队列中消费,并使用SES向用户发送电子邮件

如果您只有几封电子邮件要发送,但这还不足以影响性能,那么您可以使用SES直接从应用程序发送电子邮件

您无需向SNS主题订阅用户的电话号码,即可向该号码发送短信[1]。因此,当您希望在用户注册时也发送SMS消息时,您只需修改您的SQS队列处理器(或应用程序)即可将SMS消息发送给用户

[1]