Vodnik za preprosto e-poštno storitev (AWS SES) s Spring Boot in Spring Cloud PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Vodnik za preprosto e-poštno storitev (AWS SES) s Spring Boot in Spring Cloud

Predstavitev

AWS SES (preprosta e-poštna storitev) je storitev za pošiljanje in prejemanje e-pošte, ki jo je enostavno nastaviti. Običajno je težko, zahtevno in dolgočasno upravljati lokalni e-poštni sistem, zato je zunanje izvajanje postopka priljubljena izbira.

Amazon SES lahko uporabljamo za pošiljanje transakcijskih e-poštnih sporočil, trženjskih e-poštnih sporočil ali katere koli druge vrste obvestilnih e-poštnih sporočil našim strankam. Je cenovno ugodna rešitev za podjetja vseh velikosti, ki uporabljajo e-pošto za povezovanje s strankami, saj temelji na zanesljivi in ​​razširljivi infrastrukturi Amazonske spletne storitve (AWS).

Za pošiljanje množične e-pošte lahko katera koli aplikacija komunicira z Amazon SES. Plačamo le za e-poštna sporočila, ki jih dejansko pošljemo, ne glede na to, ali gre za transakcijska ali tržna e-poštna sporočila. Poleg tega Amazon SES podpira vrsto konfiguracij, vključno z namenskimi, skupnimi ali lastniškimi naslovi IP. Podjetja lahko vsako e-pošto štejejo z uporabo nadzornih plošč za dostavljivost in poročil o podatkih o pošiljatelju.

V tem priročniku bomo konfigurirali instanco AWS SES v regiji in jo nato integrirali Pomladni oblak za AWS ki je podprojekt Pomladni oblak. Preizkusili bomo različne scenarije za pošiljanje e-pošte iz naše aplikacije.

Opomba: Vso uporabljeno izvorno kodo najdete v vodniku na GitHub.

Življenjski cikel pošiljanja e-pošte z uporabo AWS SES

Poglejmo, kako življenjski cikel e-pošte, ki jo pošlje aplikacija, doseže ciljni nabiralnik:

  • Aplikacija, v našem primeru koda Spring Cloud, zahteva, da AWS SES pošlje e-pošto enemu ali več prejemnikom.

  • SES najprej preveri zahtevo in, če je odobrena, ustvari e-poštno sporočilo s specifikacijami zahteve. To e-poštno sporočilo ima glavo, telo in ovojnico ter je skladno z RFC 5322Definicija formata internetnega sporočila.

  • SES nato pošlje sporočilo do prejemnikovega sprejemnika prek interneta. Takoj ko je sporočilo predano SES-u, se pogosto prenese takoj, pri čemer začetni poskus dostave običajno poteka v nekaj milisekundah.

  • V tem času je več rezultatov. Na primer:

    • Uspešna dostava: Ponudnik internetnih storitev (ISP) sprejme e-pošto in jo pošlje predvidenemu prejemniku.
    • Trd odboj: Ker naslov prejemnika ni veljaven, ponudnik internetnih storitev zavrne e-pošto. Ponudnik internetnih storitev pošlje obvestilo o trdi zavrnitvi nazaj v Amazon SES, ki obvesti pošiljatelja po e-pošti ali tako, da ga objavi v temi storitve Amazon Simple Notification Service (Amazon SNS), ki je nastavljena za prejemanje tega obvestila.
    • Mehki odboj: Zaradi pogojev, kot je prejemnikov nabiralnik poln, domena ne obstaja, ali katere koli minljive okoliščine, kot je prezasedenost ponudnika internetnih storitev za obdelavo zahteve, ponudnik internetnih storitev morda ne bo mogel dostaviti e-pošte prejemniku. Ponudnik internetnih storitev nato večkrat poskusi poslati e-pošto in pošlje SES sporočilo o mehki zavrnitvi. Če SES ne more dostaviti e-pošte v določenem časovnem okviru, bodisi objavi dogodek v temi SNS ali pošlje sporočilo o zavrnitvi po e-pošti.
    • Pritožba: Prejemnik v svojem e-poštnem programu označi e-pošto kot vsiljeno pošto. Obvestilo o pritožbi se pošlje Amazon SES, ki ga nato posreduje pošiljatelju, če imata Amazon SES in ISP vzpostavljeno povratno zanko.
    • Samodejni odziv: prejemnik ponudnika internetnih storitev obvesti Amazon SES o avtomatiziranem odgovoru prejemnika, kot je obvestilo o odsotnosti, in Amazon SES posreduje obvestilo pošiljatelju.

Ko je dostava neuspešna, Amazon SES pošiljatelju vrne napako in izbriše e-pošto.

Nastavitev Amazon SES

Za razliko od drugih storitev AWS praktično ni potrebe po ustvarjanju primerka SES, saj so vsi novi računi AWS privzeto postavljeni v peskovnik AWS SES. Vsak račun AWS ima privzeto dostop do peskovnika za AWS SES v razpoložljivih regijah.

Ko uporabljamo način peskovnika, lahko pošiljamo e-pošto samo preverjenim identitetam. Domena ali e-poštni naslov, ki ga uporabljamo za pošiljanje e-pošte, je preverjena identiteta. Konstruirati in potrditi moramo vsako identiteto, ki jo nameravamo uporabiti kot From, To, Source, Senderali Return-Path naslov, preden lahko pošljemo e-pošto z uporabo SES v načinu peskovnika. Z uporabo Amazon SES za preverjanje identitete lahko dokažemo svoje lastništvo in preprečimo nezakonito uporabo.

Da bi se izognili goljufijam in ohranili ugled naslova IP, AWS SES vključuje omejitve pošiljanja e-pošte. Te omejitve določajo največje število e-poštnih sporočil na sekundo in dnevno omejitev e-poštnih sporočil za vsakega uporabnika. Če stopimo v stik s centrom za podporo AWS, lahko določimo takšne kvote po regijah.

Preverimo identiteto. Prijavite se v konzolo AWS in poiščite »Enostavna e -poštna storitev Amazon"

SES Uvod

Nato kliknite »Ustvarite identiteto«, da dodate e-pošto ali domeno za preverjanje. V našem primeru bomo dodali e-pošto za preverjanje.

Ustvarite identiteto

Ko je identiteta ustvarjena, lahko preverimo podrobnosti.

Ustvarjena identiteta

Identiteta, ki smo jo ustvarili, gre v "Preverjanje čaka" stopnja. Na tej stopnji mora uporabnik preveriti potrditveno pošto od AWS in slediti navodilom za potrditev elektronske pošte.

Preverjena identiteta

Nato moramo pridobiti "dostopni ključ"In"skrivni ključ” za avtentikacijo in avtorizacijo naše aplikacije pri SES. Da bi to ustvarili, moramo ustvariti skupino uporabnikov in tej skupini dodati uporabnika. Ko ustvarimo tega uporabnika, AWS ustvari ključ za dostop in skrivni ključ. Torej se preusmerimo na “IAM” v konzoli AWS in ustvarite uporabniško skupino.

Ustvari skupino uporabnikov

Nato moramo dodati "AdministratorAccess” dovoljenje tej skupini za SES.

Dodaj dovoljenje

Nazadnje bomo dodali uporabnika v zgornjo skupino.

Dodaj uporabnika

Nato moramo izbrati skupino za dovoljenja.

Dodaj skupino

Na koncu kopirajte ključ za dostop in skrivni ključ, prikazan na zaslonu, za nadaljnjo uporabo.

Pošiljanje e-pošte z uporabo projekta Spring Cloud

Nastavitev projekta

Zaženimo projekt Spring Cloud in poglejmo primere uporabe za integracijo s SES. Najlažji način za začetek okostnega projekta je prek Inicializacija pomladi:

Inicializacija pomladi

Dodali smo Pomladni splet za REST MVC, Apache Freemarker za ustvarjanje e-poštnih predlog, ki temeljijo na HTML, Java Mail Sender poslati e-pošto in Lombok (izbirna knjižnica za zmanjševanje okvirne plošče) odvisnosti. Poleg tega moramo dodati ustrezne odvisnosti za Spring Cloud AWS in SES. Za Spring Cloud AWS bomo dodali ločeno Spring Cloud AWS BOM v našem pom.xml datoteka z uporabo tega 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>

Nazadnje, če želimo dodati podporo za SES, moramo vključiti odvisnost od modula, ki je na voljo kot začetni modul spring-cloud-starter-aws-ses:

<dependency>
	<groupId>io.awspring.cloud</groupId>
	<artifactId>spring-cloud-starter-aws-ses</artifactId>
</dependency>

spring-cloud-starter-aws-ses vključuje prehodne odvisnosti za spring-cloud-starter-awsin spring-cloud-aws-ses. spring-cloud-aws-ses modul za SES vsebuje dva razreda: SimpleEmailServiceMailSender in SimpleEmailServiceJavaMailSender.

  • O SimpleEmailServiceMailSender razreda za pošiljanje e-pošte uporablja Amazon Simple Email Service. Java Mail API ni pogoj za to izvedbo. Uporablja se lahko za pošiljanje enostavnih poštnih sporočil brez prilog.
  • O SimpleEmailServiceJavaMailSender razred omogoča pošiljanje e-poštnih sporočil, ki vsebujejo priponke in druge mime elemente.

To torej pokriva vse naše osnovne zahteve!

Konfiguriranje Beans

Kot je razloženo zgoraj, moramo definirati dve vrsti fižola: SimpleEmailServiceMailSender in SimpleEmailServiceJavaMailSender. Ključ za dostop in skrivni ključ lahko preprosto posredujemo kot poverilnice in konfiguriramo a MailSender fižol, ki ga bomo uporabili za pošiljanje e-pošte:

@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);
    }
}

Za pošiljanje e-poštnih sporočil s prilogami moramo konfigurirati SimpleEmailServiceJavaMailSender ki je izvedba JavaMailSender vmesnik iz Springove poštne abstrakcije.

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

Določili bomo tudi lastnosti, iz katerih bomo pridobili informacije application.yml:

cloud:
  aws:
    region:
      static: eu-central-1
      auto: false
    stack:
      auto: false
    credentials:
      access-key: ********
      secret-key: **************************

Pošiljanje preproste e-pošte

Preprosta e-poštna sporočila lahko pošiljamo z uporabo SimpleEmailServiceMailSender bean, ki smo ga konfigurirali zgoraj. Definirajmo storitveno plast za uporabo tega gradnika:

@Service
public class EmailService {

    @Autowired
    private MailSender mailSender;

    public void sendMessage(SimpleMailMessage simpleMailMessage) {
        this.mailSender.send(simpleMailMessage);
    }
}

Kličemo send() metoda v MailSender fižol za pošiljanje našega e-poštnega sporočila. Prav tako moramo opraviti SimpleMailMessage ki bi vsebovalo atribute, kot je from, to, besedilo in zadevo našega e-poštnega sporočila. Torej, definirajmo a Controller razred za klic zgornje storitve z uporabo REST API:

@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";
    }
}

Zdaj, če zaženemo aplikacijo in izvedemo naslednji curl, bo poslala e-pošto na preverjen e-poštni naslov:

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'

Nato se lahko prijavimo v e-poštni naslov prejemnika in preverimo, ali je prejemnik prejel e-pošto.

Pošiljanje preproste e-pošte s prilogo

Določili bomo sloj storitve, ki bo posredoval prilogo kot mime in nastavil druge e-poštne atribute, kot je from, to, besedilo in zadeva:

@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());
        }
    }
}

Tukaj uporabljamo MimeMessageHelper da ustvarite e-poštno sporočilo s priponko. Na koncu bomo definirali Controller plast za prenos SimpleMailMessage lastnosti:

@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";
    }
}

Zdaj, če zaženemo aplikacijo in izvedemo naslednji curl, bo poslala e-pošto na preverjen e-poštni naslov:

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'

Nato se lahko prijavimo v e-poštni naslov prejemnika in preverimo, ali je prejemnik prejel e-pošto.

Pošiljanje predloge e-pošte s prilogo

Prejšnji primeri uporabe, ki smo jih videli, so dobri za razvojne ali testne scenarije, vendar v produkciji običajno uporabljamo e-poštno predlogo s spremenljivkami, ki bi jih nadomestili z odgovori API-ja. Prej smo dodali odvisnost za Apache Freemarker. Uporabili ga bomo za določitev predloge in jo naložili za obdelavo!

Za to najprej definirajmo preprosto predlogo in jo poimenujmo email-template.ftl in ga postavite v templates mapo pod 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>

Nato moramo definirati konfiguracijski razred za nalaganje predloge s poti in dodajanje kot gradnik. Za to bomo opredelili FreeMarkerConfigurationFactoryBean:

@Configuration
public class FreemarkerConfig {

    @Primary
    @Bean
    public FreeMarkerConfigurationFactoryBean factoryBean() {
        FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
        bean.setTemplateLoaderPath("classpath:/templates");
        return bean;
    }
}

Nato bomo definirali naš servisni sloj za nalaganje te predloge in ustvarjanje končnega sporočila za pošiljanje SES-u:

@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());
        }
    }

Na koncu bomo opredelili a Controller sloj za posredovanje atributov dinamične e-pošte:

@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";
    }
}

Zdaj, če zaženemo aplikacijo in izvedemo naslednji curl, bo poslala e-pošto na preverjen e-poštni naslov:

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'

Nato se lahko prijavimo v e-poštni naslov prejemnika in preverimo, ali je prejemnik prejel e-pošto:

E-pošta s predlogo Freemarker

Pošiljanje prilagojene e-pošte z uporabo predlog v AWS SES

V prejšnjem primeru uporabe smo za pošiljanje e-pošte uporabili statično predlogo. Kako lahko omogočimo dinamično oblikovanje predlog za različne namene in različne vrste prejemnikov? AWS SES nam omogoča ustvarjanje e-poštnih predlog za pošiljanje prilagojenih e-poštnih sporočil na enega ali več ciljev v eni sami operaciji.

Na račun Amazon SES lahko ustvarimo do 10,000 e-poštnih predlog. Vsaka predloga je lahko velika do 500 KB, vključno z besedilom in deli HTML. V vsakem klicu lahko pošljemo do 50 destinacij.

Zato na hitro ustvarimo e-poštno predlogo. Najprej lahko definiramo datoteko JSON z naslednjo predlogo:

{
  "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." } }

Ta predloga vsebuje naslednje atribute:

  • TemplateName: To vsebuje ime predloge.
  • SubjectPart: To vsebuje zadevo e-poštnega sporočila. Na tem sredstvu so morda prisotne nadomestne oznake. Te oznake so oblikovane na naslednji način: {{tagname}}. Vnesete lahko vrednost za {{tagname}} za vsak cilj pri pošiljanju e-pošte.
  • HtmlPart: To vsebuje telo HTML e-pošte in lahko vsebuje tudi nadomestne oznake.
  • TextPart: To predstavlja telo besedila e-pošte. Ta različica e-pošte je poslana prejemnikom, katerih e-poštni odjemalci ne vidijo e-pošte HTML. Na tem sredstvu so morda prisotne nadomestne oznake.

To datoteko lahko shranimo kot mytemplate.json. Končno lahko uporabimo ukaz AWS CLI za ustvarjanje predloge, kot sledi:

$ aws ses create-template --cli-input-json file://mytemplate.json

Nato definirajmo sloj storitev za definiranje atributov in pošiljanje e-poštnih sporočil s predlogo:

@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);
    }
}

Dodamo jih lahko več Destination naslove za pošiljanje množične e-pošte več prejemnikom. Uporabljamo sendTemplatedEmail() metoda iz AmazonSimpleEmailService vmesnik za pošiljanje tega e-poštnega sporočila s predlogo. Prav tako moramo posredovati nadomestne oznake, ki jih je treba zamenjati v besedilu HTML naše predloge, ki smo jo ustvarili prej.

Na koncu bomo opredelili a Controller sloj za definiranje REST API za posredovanje atributov:

@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";
    }
}

Nato, ko zaženemo aplikacijo, lahko izvedemo naslednje curl za pošiljanje e-poštnih sporočil s predlogo:

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'

Zdaj lahko prejemnik končno vidi e-poštno sporočilo s predlogo:

E-pošta s predlogo

Zahtevajte dostop do produkcije

Nazadnje, če želimo poslati e-pošto kateremu koli prejemniku, ne glede na to, ali je prejemnikov naslov ali domena potrjena, moramo svoj račun končno odstraniti iz peskovnika. Vse naše identitete, vključno z From, Source, Senderin Return-Path naslove, je treba še preveriti. Zahtevo za dostop do produkcije lahko oddamo iz »Nadzorna plošča računa” na naslednji način:

Nadzorna plošča računa
Zahtevajte dostop do produkcije

Zahtevo lahko oddamo tako, da izpolnimo vse zgornje podatke iz konzole AWS. Enako je mogoče oddati tudi z uporabo AWS CLI. To bi bilo koristno, ko bi morali zahtevati dostop za veliko število identitet in bi radi avtomatizirali postopek.

zaključek

V tem članku so bile zajete ključne zamisli storitve Amazon Simple Email Service (SES) in knjižnic, ki jih ponuja Spring Cloud AWS za povezovanje z njo. Poleg tega smo ustvarili aplikacijo Spring Boot z API-jem REST, ki lahko pošilja e-pošto prek modula Spring Cloud AWS SES.

Zdaj bi morali dobro razumeti, kaj je Amazon Simple Email Service (SES) in kako jo uporabiti za pošiljanje e-pošte.

Časovni žig:

Več od Stackabuse