如何使用Spring Boot作为后端和AWS SES服务,用Angular发送联系人表单数据到电子邮件地址?<



我有一个用Angular创建的网站,在'contact us'中有一个联系表单,并希望允许用户发送消息。联系方式请发送到我的个人邮箱

用HTML和PHP发送联系人表单数据非常简单,现在使用Angular作为前端,Spring Boot作为后端和AWS服务,相比之下,似乎有点更具挑战性。除了建立Angular响应式表单,还有人知道从哪里开始吗?

将Angular表单数据发布到Spring Boot控制器。Angular网站和Spring BOOT后端是解耦的。

然后你可以设置你的Spring后端使用Amazon SES Java V2 API发送电子邮件消息。您可以使用发布的表单数据来构建电子邮件消息。

下面的Java代码是发送邮件消息的SES Java V2代码示例。

package com.example.ses;
// snippet-start:[ses.java2.sendmessage.request.import]
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ses.SesClient;
import software.amazon.awssdk.services.ses.model.*;
import software.amazon.awssdk.services.ses.model.Message;
import software.amazon.awssdk.services.ses.model.Body;
import javax.mail.MessagingException;
// snippet-end:[ses.java2.sendmessage.request.import]
/**
* Before running this Java V2 code example, set up your development environment, including your credentials.
*
* For more information, see the following documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class SendMessageEmailRequest {
public static void main(String[] args) {
final String usage = "n" +
"Usage:n" +
"    <sender> <recipient> <subject> nn" +
"Where:n" +
"    sender - An email address that represents the sender. n"+
"    recipient -  An email address that represents the recipient. n"+
"    subject - The  subject line. n" ;
if (args.length != 3) {
System.out.println(usage);
System.exit(1);
}
String sender = args[0];
String recipient = args[1];
String subject = args[2];
Region region = Region.US_EAST_1;
SesClient client = SesClient.builder()
.region(region)
.credentialsProvider(ProfileCredentialsProvider.create())
.build();
// The HTML body of the email.
String bodyHTML = "<html>" + "<head></head>" + "<body>" + "<h1>Hello!</h1>"
+ "<p> See the list of customers.</p>" + "</body>" + "</html>";
try {
send(client, sender, recipient, subject, bodyHTML);
client.close();
System.out.println("Done");
} catch (MessagingException e) {
e.getStackTrace();
}
}
// snippet-start:[ses.java2.sendmessage.request.main]
public static void send(SesClient client,
String sender,
String recipient,
String subject,
String bodyHTML
) throws MessagingException {
Destination destination = Destination.builder()
.toAddresses(recipient)
.build();
Content content = Content.builder()
.data(bodyHTML)
.build();
Content sub = Content.builder()
.data(subject)
.build();
Body body = Body.builder()
.html(content)
.build();
Message msg = Message.builder()
.subject(sub)
.body(body)
.build();
SendEmailRequest emailRequest = SendEmailRequest.builder()
.destination(destination)
.message(msg)
.source(sender)
.build();
try {
System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");
client.sendEmail(emailRequest);
} catch (SesException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
// snippet-end:[ses.java2.sendmessage.request.main]
}

如果您不熟悉Java V2的AWS SDK,请参阅https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html。

您可以在这里找到SES POM文件:https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/ses