Giriş
AWS SES (Basit E-posta Hizmeti) kurulumu basit bir e-posta gönderme ve alma hizmetidir. Şirket içi bir e-posta sistemini yönetmek genellikle zor, titiz ve sıkıcıdır, bu nedenle süreci dış kaynak kullanımı popüler bir seçimdir.
Amazon SES'i müşterilerimize işlem e-postaları, pazarlama e-postaları veya diğer türde bildirim e-postaları göndermek için kullanabiliriz. Müşterileriyle bağlantı kurmak için e-posta kullanan her büyüklükteki işletme için uygun maliyetli bir çözümdür çünkü güvenilir ve ölçeklenebilir bir altyapı üzerine kurulmuştur. Amazon Web Services (AWS).
Toplu e-posta göndermek için herhangi bir uygulama Amazon SES ile etkileşime girebilir. İster işlem e-postaları ister pazarlama e-postaları olsun, yalnızca gerçekten gönderdiğimiz e-postalar için ödeme yaparız. Ayrıca, ayrılmış, paylaşılan veya sahip olunan IP adresleri dahil olmak üzere çeşitli yapılandırmalar Amazon SES tarafından desteklenir. İşletmeler, teslim edilebilirlik gösterge panoları ve gönderen bilgileriyle ilgili raporları kullanarak her e-postayı önemli hale getirebilir.
Bu kılavuzda, bir bölgede bir AWS SES örneği yapılandıracağız ve ardından AWS için Bahar Bulutu alt projesi olan Bahar Bulutu. Uygulamamızdan e-posta göndermek için farklı senaryolar deneyeceğiz.
Not: Kılavuzda kullanılan tüm kaynak kodlarını adresinde bulabilirsiniz. Github.
AWS SES Kullanarak E-posta Gönderme Yaşam Döngüsü
Bir uygulama tarafından gönderilen bir e-postanın yaşam döngüsünün hedef posta kutusuna nasıl ulaştığına bakalım:
-
Bizim durumumuzda bir uygulama, Spring Cloud kodu AWS SES'ten bir veya daha fazla alıcıya e-posta göndermesini ister.
-
SES başlangıçta talebi doğrular ve onaylanırsa talebin özelliklerini içeren bir e-posta iletisi oluşturur. Bu e-posta mesajının bir başlığı, gövdesi ve zarfı vardır ve şuna uygundur: RFC 5322'ın İnternet Mesaj Biçimi tanımı.
-
SES daha sonra mesajı İnternet üzerinden alıcının alıcısına iletir. Mesaj SES'e teslim edilir edilmez, genellikle hemen iletilir ve ilk teslim denemesi tipik olarak birkaç milisaniye içinde gerçekleşir.
-
Şu anda birkaç sonuç var. Örneğin:
- Başarılı Teslimat: İnternet servis sağlayıcısı (ISP) e-postayı kabul eder ve hedeflenen alıcıya gönderir.
- Sert sıçrama: Alıcının adresi geçersiz olduğundan, ISP e-postayı reddeder. ISP, sabit geri dönen bildirimi, göndereni e-posta yoluyla veya bu bildirimi alacak şekilde ayarlanmış bir Amazon Simple Notification Service (Amazon SNS) başlığında yayınlayarak bilgilendiren Amazon SES'e geri gönderir.
- Yumuşak Sıçrama: Alıcının gelen kutusunun dolu olması, alan adının mevcut olmaması veya ISP'nin talebi işlemek için çok meşgul olması gibi herhangi bir geçici durum nedeniyle, ISP e-postayı alıcıya teslim edemeyebilir. ISP daha sonra e-postayı belirli bir sayıda yeniden dener ve SES'e geçici olarak geri dönen bir mesaj gönderir. SES, e-postayı belirtilen süre içinde teslim edemezse, olayı bir SNS başlığında yayınlar veya e-posta yoluyla kalıcı bir geri dönen mesaj gönderir.
- şikâyet: E-posta, alıcı tarafından e-posta programlarında spam olarak sınıflandırılır. Amazon SES'e bir şikayet bildirimi iletilir ve Amazon SES ve ISP'nin bir geri bildirim döngüsü oluşturması durumunda şikayet bildirimi gönderene iletilir.
- Otomatik cevap: Alıcı ISP, Amazon SES'e, alıcının işyeri dışında bildirimi gibi otomatik bir yanıt verdiğini bildirir ve Amazon SES, bildirimi gönderene iletir.
Teslimat başarısız olduğunda, Amazon SES gönderene bir hata döndürür ve e-postayı siler.
Amazon SES Kurulumu
Diğer tüm AWS Hizmetlerinden farklı olarak, tüm yeni AWS hesapları varsayılan olarak AWS SES korumalı alanına yerleştirildiğinden, bir SES bulut sunucusu oluşturmaya neredeyse hiç gerek yoktur. Her AWS hesabı, varsayılan olarak mevcut bölgelerde AWS SES için korumalı alan erişimine sahiptir.
Korumalı alan modunu kullanırken yalnızca doğrulanmış kimliklere e-posta gönderebiliriz. E-posta göndermek için kullandığımız bir etki alanı veya e-posta adresi, doğrulanmış bir kimliktir. olarak kullanmayı amaçladığımız her bir kimliği oluşturmalı ve doğrulamalıyız. From
, To
, Source
, Sender
ya da Return-Path
SES'i korumalı alan modunda kullanarak bir e-posta gönderebilmemiz için adres. Kimliği doğrulamak için Amazon SES'i kullanarak mülkiyetimizi kanıtlayabilir ve yasa dışı kullanımı durdurabiliriz.
AWS SES, dolandırıcılığı önlemek ve bir IP adresinin itibarını korumak için e-posta gönderme sınırları içerir. Bu sınırlamalar, saniye başına maksimum e-posta sayısını ve her kullanıcı için günlük e-posta sınırını belirtir. AWS Destek Merkezi ile iletişime geçerek bölgelere göre bu kotaları belirleyebiliriz.
Kimlikleri doğrulayalım. AWS Konsolunda oturum açın ve “Amazon Basit E-posta Hizmeti"
Ardından "Kimlik Oluştur” doğrulama için bir e-posta veya alan eklemek için. Bizim durumumuzda, doğrulama için bir e-posta ekleyeceğiz.
Kimlik oluşturulduktan sonra ayrıntıları doğrulayabiliriz.
Yarattığımız kimlik “Doğrulama Bekleniyor" sahne. Bu aşamada, kullanıcının AWS'den gelen doğrulama postasını kontrol etmesi ve e-postayı doğrulamak için talimatları izlemesi gerekir.
Sonra, getirmemiz gerekiyor "erişim anahtarı"Ve"gizli anahtar” Uygulamamızın SES ile kimlik doğrulaması ve yetkilendirmesi için. Bunu oluşturmak için bir Kullanıcı Grubu oluşturmamız ve bu gruba bir Kullanıcı eklememiz gerekiyor. Bu Kullanıcıyı oluşturduğumuzda, AWS bir erişim anahtarı ve gizli anahtar oluşturur. O halde “ adresine yönlendirelim.IAM” AWS Konsolunda ve Kullanıcı Grubu oluşturun.
O zaman eklememiz gerekiyor "Yönetici Erişimi” SES için o gruba izin.
Son olarak, yukarıdaki gruba bir Kullanıcı ekleyeceğiz.
Ardından, izinler için grubu seçmemiz gerekiyor.
Son olarak, daha fazla kullanım için ekranda görüntülenen erişim anahtarını ve gizli anahtarı kopyalayın.
Spring Cloud Projesi Kullanarak E-posta Gönderme
Proje Kurulumu
Bir Spring Cloud projesi başlatalım ve SES ile entegre etmek için kullanım durumlarını gözden geçirelim. Bir iskelet projesine başlamanın en kolay yolu, Bahar İlklendirme:
Biz ekledik Bahar Ağı REST MVC için, Apache Freemarker'ı HTML tabanlı e-posta şablonları oluşturmak için, Java Posta Göndericisi bir e-posta göndermek ve Lombok (isteğe bağlı standart azaltma kitaplığı) bağımlılıklar. Ek olarak, Spring Cloud AWS ve SES için ilgili bağımlılıkları eklememiz gerekiyor. Spring Cloud AWS için ayrı bir Spring Cloud AWS BOM ekleyeceğiz. pom.xml
bunu kullanarak dosya blok:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.awspring.cloud</groupId>
<artifactId>spring-cloud-aws-dependencies</artifactId>
<version>2.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Son olarak, SES desteğini eklemek için, başlangıç modülü olarak mevcut olan modül bağımlılığını dahil etmemiz gerekiyor. spring-cloud-starter-aws-ses
:
<dependency>
<groupId>io.awspring.cloud</groupId>
<artifactId>spring-cloud-starter-aws-ses</artifactId>
</dependency>
spring-cloud-starter-aws-ses
için geçişli bağımlılıkları içerir spring-cloud-starter-aws
, ve spring-cloud-aws-ses
. spring-cloud-aws-ses
SES modülü iki sınıf içerir: SimpleEmailServiceMailSender
ve SimpleEmailServiceJavaMailSender
.
- The
SimpleEmailServiceMailSender
class, e-posta göndermek için Amazon Simple Email Service'i kullanır. Java Mail API, bu uygulama için bir gereklilik değildir. Ek içermeyen basit posta mesajları göndermek için kullanılabilir. - The
SimpleEmailServiceJavaMailSender
class, ekler ve diğer mim öğeleri içeren e-postaların gönderilmesini sağlar.
Yani bu, tüm temel gereksinimlerimizi karşılıyor!
Fasulye Yapılandırma
Yukarıda tartışıldığı gibi, iki tür fasulye tanımlamamız gerekiyor: SimpleEmailServiceMailSender
ve SimpleEmailServiceJavaMailSender
. Erişim anahtarını ve gizli anahtarı kimlik bilgileri olarak iletebilir ve bir MailSender
e-posta göndermek için kullanacağımız bean:
@Configuration
public class SesConfig {
@Value("${cloud.aws.credentials.access-key}")
private String accessKey;
@Value("${cloud.aws.credentials.secret-key}")
private String secretKey;
@Value("${cloud.aws.region.static}")
private String region;
@Bean
public AmazonSimpleEmailService amazonSimpleEmailService() {
BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
return AmazonSimpleEmailServiceClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(region)
.build();
}
@Bean
public MailSender mailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
return new SimpleEmailServiceMailSender(amazonSimpleEmailService);
}
@Bean
public JavaMailSender javaMailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
return new SimpleEmailServiceJavaMailSender(amazonSimpleEmailService);
}
}
Ekleri olan e-postalar göndermek için yapılandırmamız gerekir. SimpleEmailServiceJavaMailSender
olan bir uygulamadır JavaMailSender
Spring'in posta soyutlamasından arayüz.
En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!
Bilgileri almak için özellikleri de tanımlayacağız. application.yml
:
cloud:
aws:
region:
static: eu-central-1
auto: false
stack:
auto: false
credentials:
access-key: ********
secret-key: **************************
Basit E-posta Gönderme
kullanarak basit e-postalar gönderebiliriz. SimpleEmailServiceMailSender
yukarıda yapılandırdığımız bean. Bu bean'i kullanmak için bir servis katmanı tanımlayalım:
@Service
public class EmailService {
@Autowired
private MailSender mailSender;
public void sendMessage(SimpleMailMessage simpleMailMessage) {
this.mailSender.send(simpleMailMessage);
}
}
biz diyoruz send()
yönteminde MailSender
e-postamızı göndermek için. Ayrıca geçmemiz gereken SimpleMailMessage
gibi öznitelikleri içerecektir from
, to
, e-postamızın metni ve konusu. Öyleyse, bir tanımlayalım Controller
REST API kullanarak yukarıdaki hizmeti çağırmak için sınıf:
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/sendEmail")
public String sendMessage(@RequestBody EmailDetails emailDetails) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(emailDetails.getFromEmail());
simpleMailMessage.setTo(emailDetails.getToEmail());
simpleMailMessage.setSubject(emailDetails.getSubject());
simpleMailMessage.setText(emailDetails.getBody());
emailService.sendMessage(simpleMailMessage);
return "Email sent successfully";
}
}
Şimdi, uygulamayı çalıştırıp aşağıdaki curl'u çalıştırırsak, doğrulanmış e-posta adresine bir e-posta gönderecektir:
curl -i -X POST
-H "Content-Type:application/json"
-d
'{
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "test email",
"body": "Hi, This is a test email."
}'
'http://localhost:8080/sendEmail'
Ardından, alıcının posta adresine giriş yapabilir ve alıcının e-postayı alıp almadığını doğrulayabiliriz.
Ekli Basit E-posta Gönderme
Eki mime olarak iletmek için bir hizmet katmanı tanımlayacağız ve aşağıdaki gibi diğer e-posta özniteliklerini ayarlayacağız. from
, to
, metin ve konu:
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendMessageWithAttachment(SimpleMailMessage simpleMailMessage) {
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(
message,
MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
StandardCharsets.UTF_8.name());
helper.addAttachment("logo.png", new ClassPathResource("logo.png"));
helper.setTo(Objects.requireNonNull(simpleMailMessage.getTo()));
helper.setText(Objects.requireNonNull(simpleMailMessage.getText()));
helper.setSubject(Objects.requireNonNull(simpleMailMessage.getSubject()));
helper.setFrom(Objects.requireNonNull(simpleMailMessage.getFrom()));
javaMailSender.send(message);
} catch (MessagingException e) {
System.err.println("Exception: " + e.getMessage());
}
}
}
İşte kullanıyoruz MimeMessageHelper
ekli bir e-posta oluşturmak için. Son olarak, tanımlayacağız Controller
geçmek için katman SimpleMailMessage
Öznitellikler:
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/sendEmailWithAttachment")
public String sendMessageWithAttachment(@RequestBody EmailDetails emailDetails) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(emailDetails.getFromEmail());
simpleMailMessage.setTo(emailDetails.getToEmail());
simpleMailMessage.setSubject(emailDetails.getSubject());
simpleMailMessage.setText(emailDetails.getBody());
emailService.sendMessageWithAttachment(simpleMailMessage);
return "Email sent successfully";
}
}
Şimdi, uygulamayı çalıştırıp aşağıdaki curl'u çalıştırırsak, doğrulanmış e-posta adresine bir e-posta gönderecektir:
curl -i -X POST
-H "Content-Type:application/json"
-d
'{
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "test email",
"body": "Hi, This is a test email with attachment."
}'
'http://localhost:8080/sendEmailWithAttachment'
Ardından, alıcının posta adresine giriş yapabilir ve alıcının e-postayı alıp almadığını doğrulayabiliriz.
Ekli Şablon E-postası Gönderme
Gördüğümüz önceki kullanım durumları, geliştirme veya test senaryoları için iyidir, ancak üretimde genellikle bir API'nin yanıtları kullanılarak değiştirilecek değişkenlere sahip bir e-posta şablonu kullanırız. Daha önce bağımlılığı eklemiştik Apache Freemarker'ı. Bunu bir şablon tanımlamak ve işlemek için yüklemek için kullanacağız!
Bunun için önce basit bir şablon tanımlayalım, adını şöyle koyalım. email-template.ftl
ve içine koy templates
altındaki klasör resources
:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>StackAbuse Email</title>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top" bgcolor="#838383"
style="background-color: #838383;"><br> <br>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" valign="top" bgcolor="#d3be6c"
style="background-color: #d3be6c; font-family: Arial,
Helvetica, sans-serif; font-size: 13px; color: #000000;
padding: 0px 15px 10px 15px;">
<div style="font-size: 48px; color:blue;">
<b>StackAbuse</b>
</div>
<div style="font-size: 24px; color: #555100;">
<br> Sending Email using Spring Cloud with <b>FreeMarker</b> template !!! <br>
</div>
<div>
<br> Want to learn a new technology or become an in-demand full-stack developer?<br>
<br> We teach the skills you need to level up in your career.<br>
<br>"Sharing knowledge is the biggest learning" <br> <br>
<br> <br> <b>${Name}</b><br>${location}<br>
<br>
</div>
</td>
</tr>
</table> <br> <br></td>
</tr>
</table>
</body>
</html>
Ardından, şablonu yoldan yüklemek ve bean olarak eklemek için bir konfigürasyon sınıfı tanımlamamız gerekiyor. Bunun için tanımlayacağımız FreeMarkerConfigurationFactoryBean
:
@Configuration
public class FreemarkerConfig {
@Primary
@Bean
public FreeMarkerConfigurationFactoryBean factoryBean() {
FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
bean.setTemplateLoaderPath("classpath:/templates");
return bean;
}
}
Ardından, bu şablonu yüklemek ve SES'e gönderilecek son bir mesaj oluşturmak için hizmet katmanımızı tanımlayacağız:
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private Configuration config;
public void sendTemplateMessageWithAttachment(SimpleMailMessage simpleMailMessage) {
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(
message,
MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
StandardCharsets.UTF_8.name());
Template t = config.getTemplate("email-template.ftl");
Map model = new HashMap();
model.put("Name", "StackAbuse Admin");
model.put("location", "Bangalore, India");
String html = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
helper.addAttachment("logo.png", new ClassPathResource("logo.png"));
helper.setTo(Objects.requireNonNull(simpleMailMessage.getTo()));
helper.setText(html, true);
helper.setSubject(Objects.requireNonNull(simpleMailMessage.getSubject()));
helper.setFrom(Objects.requireNonNull(simpleMailMessage.getFrom()));
javaMailSender.send(message);
} catch (MessagingException | IOException | TemplateException e) {
System.err.println("Exception: " + e.getMessage());
}
}
Son olarak, bir tanımlayacağız Controller
dinamik e-posta özniteliklerini iletmek için katman:
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/sendTemplateEmailWithAttachment")
public String sendTemplateMessageWithAttachment(@RequestBody EmailDetails emailDetails) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(emailDetails.getFromEmail());
simpleMailMessage.setTo(emailDetails.getToEmail());
simpleMailMessage.setSubject(emailDetails.getSubject());
simpleMailMessage.setText(emailDetails.getBody());
emailService.sendTemplateMessageWithAttachment(simpleMailMessage);
return "Email sent successfully";
}
}
Şimdi, uygulamayı çalıştırıp aşağıdaki curl'u çalıştırırsak, doğrulanmış e-posta adresine bir e-posta gönderecektir:
curl -i -X POST
-H "Content-Type:application/json"
-d
'{
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "test email",
"body": "Hi, This is a test template email with attachment."
}'
'http://localhost:8080/sendTemplateEmailWithAttachment'
Ardından, alıcının posta adresine giriş yapabilir ve alıcının e-postayı alıp almadığını doğrulayabiliriz:
AWS SES'te Şablonları Kullanarak Kişiselleştirilmiş E-posta Gönderme
Önceki kullanım durumunda, e-posta göndermek için statik bir şablon kullandık. Şablonların farklı amaçlar ve farklı alıcı türleri için dinamik olarak tasarlanmasını nasıl sağlayabiliriz? AWS SES, tek bir işlemde bir veya daha fazla hedefe kişiselleştirilmiş e-postalar göndermek için e-posta şablonları oluşturmamıza olanak tanır.
Amazon SES hesabı başına 10,000 adede kadar e-posta şablonu oluşturabiliriz. Her şablonun boyutu, hem metin hem de HTML bölümleri dahil olmak üzere en fazla 500 KB olabilir. Her aramada 50'ye kadar varış noktası gönderebiliriz.
O halde hızlıca bir e-posta şablonu oluşturalım. İlk olarak, aşağıdaki şablonu kullanarak bir JSON dosyası tanımlayabiliriz:
{
"Template": {
"TemplateName": "MyTemplate",
"SubjectPart": "Greetings from {{name}}!",
"HtmlPart": "StackAbuse Email
StackAbuse
Sending Email using Spring Cloud with AWS SES Email template !!!
Want to learn a new technology or become an in-demand full-stack developer?
We teach the skills you need to level up in your career.
"Sharing knowledge is the biggest learning"
{{name}}
{{location}}
",
"TextPart": "Dear {{name}},rnHere is your StackAbuse Email."
}
}
Bu şablon aşağıdaki öznitelikleri içerir:
- Şablon adı: Bu, şablonun adını içerir.
- Konu Kısmı: Bu, e-postanın konu satırını tutar. Bu öğede yedek etiketler bulunabilir. Bu etiketler aşağıdaki gibi biçimlendirilmiştir:
{{tagname}}
. için bir değer girebilirsiniz.{{tagname}}
e-postayı gönderirken her hedef için. - HtmlPart: Bu, e-postanın HTML gövdesini içerir ve aynı zamanda değiştirme etiketlerini de içerebilir.
- metin parçası: Bu, e-postanın metin gövdesini temsil eder. E-postanın bu sürümü, e-posta istemcileri HTML e-postalarını görüntülemeyen alıcılara gönderilir. Bu öğede yedek etiketler bulunabilir.
Bu dosyayı şu şekilde kaydedebiliriz: mytemplate.json
. Son olarak, şablonu aşağıdaki gibi oluşturmak için bir AWS CLI komutu kullanabiliriz:
$ aws ses create-template --cli-input-json file://mytemplate.json
Ardından, nitelikleri tanımlamak ve şablonlu e-postalar göndermek için bir hizmet katmanı tanımlayalım:
@Service
public class EmailService {
@Autowired
private AmazonSimpleEmailService simpleEmailService;
public void sendTemplatedMessage(SimpleMailMessage simpleMailMessage) {
Destination destination = new Destination();
List toAddresses = new ArrayList();
String[] emails = simpleMailMessage.getTo();
Collections.addAll(toAddresses, Objects.requireNonNull(emails));
destination.setToAddresses(toAddresses);
SendTemplatedEmailRequest templatedEmailRequest = new SendTemplatedEmailRequest();
templatedEmailRequest.withDestination(destination);
templatedEmailRequest.withTemplate("MyTemplate");
templatedEmailRequest.withTemplateData("{ "name":"StackAbuse Admin", "location": "Bangalore, India"}");
templatedEmailRequest.withSource(simpleMailMessage.getFrom());
simpleEmailService.sendTemplatedEmail(templatedEmailRequest);
}
}
birden fazla ekleyebiliriz Destination
birden çok alıcıya toplu e-posta göndermek için adresler. biz kullanıyoruz sendTemplatedEmail()
yöntemden AmazonSimpleEmailService
Bu şablon e-postayı göndermek için arayüz. Daha önce oluşturduğumuz şablonumuzun HTML metninde değiştirilecek olan yedek etiketleri de geçirmemiz gerekiyor.
Son olarak, bir tanımlayacağız Controller
Nitelikleri iletmek üzere REST API'sini tanımlamak için katman:
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/sendAWSTemplatedEmail")
public String sendTemplatedMessage(@RequestBody EmailDetails emailDetails) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(emailDetails.getFromEmail());
simpleMailMessage.setTo(emailDetails.getToEmail());
simpleMailMessage.setSubject(emailDetails.getSubject());
simpleMailMessage.setText(emailDetails.getBody());
emailService.sendTemplatedMessage(simpleMailMessage);
return "Email sent successfully";
}
}
Ardından, uygulamayı çalıştırdığımızda aşağıdakileri çalıştırabiliriz. curl
şablonlu e-postalar göndermek için:
curl -i -X POST
-H "Content-Type:application/json"
-d
'{
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "Greetings from StackAbuse Admin",
"body": "Hi, This is a AWS templated email."
}'
'http://localhost:8080/sendAWSTemplatedEmail'
Artık alıcı sonunda şablonlu bir e-posta görebilecek:
Üretim Erişimi İste
Son olarak, herhangi bir alıcıya e-posta göndermek için, alıcının adresi veya alan adı doğrulanmış olsun olmasın, hesabımızı korumalı alandan çıkarmalıyız. dahil olmak üzere tüm kimliklerimiz From
, Source
, Sender
, ve Return-Path
adresler yine de doğrulanmalıdır. Üretim erişimi için " adresinden bir istek gönderebiliriz.Hesap Tablosu” sayfası aşağıdaki gibidir:
AWS Konsolundan yukarıdaki tüm detayları doldurarak talebi gönderebiliriz. Aynısı AWS CLI kullanılarak da gönderilebilir. Bu, çok sayıda kimliğe erişim talep etmemiz gerektiğinde ve süreci otomatikleştirmek istediğimizde yardımcı olacaktır.
Sonuç
Amazon Simple Email Service (SES) ile ilgili temel fikirler ve Spring Cloud AWS tarafından arayüz oluşturmak için sunulan kitaplıklar bu makalede ele alındı. Ek olarak, Spring Cloud AWS SES modülü aracılığıyla e-posta gönderebilen REST API'li bir Spring Boot uygulaması oluşturduk.
Artık Amazon Simple Email Service'in (SES) ne olduğu ve e-posta göndermek için nasıl kullanılacağı hakkında sağlam bir anlayışa sahip olmalısınız.