Opas yksinkertaiseen sähköpostipalveluun (AWS SES), jossa on Spring Boot ja Spring Cloud PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Opas yksinkertaiseen sähköpostipalveluun (AWS SES) Spring Bootin ja Spring Cloudin avulla

esittely

AWS SES (yksinkertainen sähköpostipalvelu) on yksinkertaisesti määritettävä sähköpostin lähetys- ja vastaanottopalvelu. Paikallisen sähköpostijärjestelmän hallinta on yleensä vaikeaa, hankalaa ja työlästä, joten prosessin ulkoistaminen on suosittu valinta.

Voimme käyttää Amazon SES:ää lähettääksemme asiakkaillemme tapahtumasähköpostiviestejä, markkinointisähköposteja tai muita ilmoitussähköposteja. Se on edullinen ratkaisu kaikenkokoisille yrityksille, jotka käyttävät sähköposteja yhteydenpitoon asiakkaisiinsa, koska se on rakennettu luotettavaan ja skaalautuvaan infrastruktuuriin. Amazon Web Services (AWS).

Joukkosähköpostien lähettämiseksi mikä tahansa sovellus voi olla vuorovaikutuksessa Amazon SES:n kanssa. Maksamme vain todella lähettämistämme sähköpostiviesteistä, olivatpa ne sitten tapahtumasähköposteja tai markkinointisähköposteja. Lisäksi Amazon SES tukee useita määrityksiä, mukaan lukien omistetut, jaetut tai omistetut IP-osoitteet. Yritykset voivat tehdä jokaisesta sähköpostista tärkeän käyttämällä toimitettavuuden kojetauluja ja lähettäjätietojen raportteja.

Tässä oppaassa aiomme määrittää AWS SES -esiintymän alueella ja sitten integroida sen kanssa Kevätpilvi AWS:lle joka on osaprojekti Kevään pilvi. Kokeilemme erilaisia ​​skenaarioita sähköpostien lähettämiseen sovelluksestamme.

Huomautus: Löydät kaiken oppaassa käytetyn lähdekoodin osoitteesta Github.

Sähköpostin lähettämisen elinkaari AWS SES:n avulla

Katsotaanpa, kuinka sovelluksen lähettämän sähköpostin elinkaari saavuttaa kohdepostilaatikkoon:

  • Sovellus, meidän tapauksessamme Spring Cloud -koodi, pyytää AWS SES:ää lähettämään sähköpostin yhdelle tai useammalle vastaanottajalle.

  • SES tarkistaa pyynnön aluksi ja, jos se hyväksytään, tuottaa sähköpostiviestin, jossa on pyynnön tiedot. Tässä sähköpostiviestissä on otsikko, tekstiosa ja kirjekuori, ja se on vaatimusten mukainen RFC 5322Internet-viestimuodon määritelmä.

  • SES lähettää sitten viestin vastaanottajan vastaanottajalle Internetin kautta. Heti kun viesti välitetään SES:lle, se lähetetään usein heti, ja ensimmäinen toimitusyritys tapahtuu tyypillisesti muutamassa millisekunnissa.

  • Tällä hetkellä on useita tuloksia. Esimerkiksi:

    • Onnistunut toimitus: Internet-palveluntarjoaja (ISP) hyväksyy sähköpostin ja lähettää sen aiotulle vastaanottajalle.
    • Kova pomppu: Koska vastaanottajan osoite on virheellinen, Internet-palveluntarjoaja hylkää sähköpostin. Internet-palveluntarjoaja lähettää kovan palautusilmoituksen takaisin Amazon SES:lle, joka ilmoittaa lähettäjälle sähköpostitse tai julkaisemalla sen Amazon Simple Notification Service (Amazon SNS) -aiheeseen, joka on määritetty vastaanottamaan tämä ilmoitus.
    • Pehmeä pomppu: Koska vastaanottajan postilaatikko on täynnä, verkkotunnusta ei ole olemassa tai mikä tahansa ohimenevä seikka, kuten Internet-palveluntarjoaja on liian kiireinen käsittelemään pyyntöä, Internet-palveluntarjoaja ei ehkä pysty toimittamaan sähköpostia vastaanottajalle. Internet-palveluntarjoaja yrittää sitten sähköpostia uudelleen tietyn määrän kertoja ja lähettää SES:lle pehmeän palautusviestin. Jos SES ei pysty toimittamaan sähköpostia määritetyn ajan kuluessa, se joko julkaisee tapahtuman SNS-aiheeseen tai lähettää kovan palautusviestin sähköpostitse.
    • Valitus: Vastaanottaja on luokitellut sähköpostin roskapostiksi sähköpostiohjelmassaan. Valitusilmoitus lähetetään Amazon SES:lle, joka välittää sen sitten lähettäjälle, jos Amazon SES:lle ja Internet-palveluntarjoajalle on muodostettu palautesilmukka.
    • Automaattinen vastaus: Vastaanottajan Internet-palveluntarjoaja ilmoittaa Amazon SES:lle vastaanottajan automaattisesta vastauksesta, kuten poissaoloilmoituksesta, ja Amazon SES välittää ilmoituksen lähettäjälle.

Jos toimitus epäonnistuu, Amazon SES palauttaa virheilmoituksen lähettäjälle ja poistaa sähköpostin.

Amazon SES:n määrittäminen

Toisin kuin muut AWS-palvelut, SES-instanssia ei käytännössä tarvitse luoda, koska kaikki uudet AWS-tilit sijoitetaan oletuksena AWS SES -hiekkalaatikkoon. Jokaisella AWS-tilillä on oletuksena AWS SES:n hiekkalaatikkokäyttöoikeus käytettävissä olevilla alueilla.

Hiekkalaatikkotilaa käytettäessä voimme lähettää sähköposteja vain vahvistetuille henkilöllisyyksille. Verkkotunnus tai sähköpostiosoite, jota käytämme sähköpostin lähettämiseen, on vahvistettu henkilöllisyys. Meidän on rakennettava ja vahvistettava jokainen identiteetti, jota aiomme käyttää a From, To, Source, Sendertai Return-Path ennen kuin voimme lähettää sähköpostin SES:n avulla hiekkalaatikkotilassa. Käyttämällä Amazon SES:ää henkilöllisyyden vahvistamiseen voimme todistaa omistusoikeutemme ja lopettaa laittoman käytön.

Petosten välttämiseksi ja IP-osoitteen maineen säilyttämiseksi AWS SES sisältää sähköpostin lähetysrajoituksia. Nämä rajoitukset määrittelevät sähköpostien enimmäismäärän sekunnissa ja päivittäisen sähköpostirajan kullekin käyttäjälle. Ottamalla yhteyttä AWS-tukikeskukseen voimme vahvistaa tällaisia ​​kiintiöitä alueittain.

Varmistetaan henkilöllisyydet. Kirjaudu AWS-konsoliin ja etsi "Amazonin yksinkertainen sähköpostipalvelu"

SES Intro

Napsauta sitten ”Luo identiteetti" lisätäksesi sähköpostiosoitteen tai verkkotunnuksen vahvistusta varten. Meidän tapauksessamme aiomme lisätä sähköpostin vahvistusta varten.

Luo identiteetti

Kun henkilöllisyys on luotu, voimme tarkistaa tiedot.

Luotu identiteetti

Luomamme identiteetti menee "Vahvistus odottaa” vaihe. Tässä vaiheessa käyttäjän on tarkistettava AWS:n vahvistusviesti ja noudatettava ohjeita sähköpostin vahvistamiseksi.

Vahvistettu henkilöllisyys

Seuraavaksi meidän on haettava "pääsykoodi"Ja"salainen avain” sovelluksemme todentamiseen ja valtuutukseen SES:n avulla. Luodaksemme sen, meidän on luotava käyttäjäryhmä ja lisättävä käyttäjä kyseiseen ryhmään. Kun luomme kyseisen käyttäjän, AWS luo pääsyavaimen ja salaisen avaimen. Joten ohjataan uudelleen kohteeseen "IAM” AWS-konsolissa ja luo käyttäjäryhmä.

Luo käyttäjäryhmä

Sitten meidän on lisättävä "Järjestelmänvalvojan käyttöoikeus”-lupa kyseiselle ryhmälle SES:lle.

Lisää lupa

Lopuksi lisäämme käyttäjän yllä olevaan ryhmään.

Add user

Seuraavaksi meidän on valittava ryhmä lupia varten.

Lisää ryhmä

Kopioi lopuksi näytöllä näkyvä pääsyavain ja salainen avain jatkokäyttöä varten.

Sähköpostien lähettäminen Spring Cloud Projectin avulla

Projektin asennus

Keksitään Spring Cloud -projekti ja käymme läpi käyttötapaukset integroidaksesi SES:ään. Helpoin tapa aloittaa luurankoprojekti on kautta Kevät Initializr:

Kevät Initializr

Olemme lisänneet Kevään verkko REST MVC:lle, Apache Freemarker luoda HTML-pohjaisia ​​sähköpostimalleja, Java Mail Sender lähettää sähköpostia ja Lombok (valinnainen kattilalevyä vähentävä kirjasto) riippuvuudet. Lisäksi meidän on lisättävä asiaankuuluvat riippuvuudet Spring Cloud AWS:lle ja SES:lle. Spring Cloud AWS:lle lisäämme erillisen Spring Cloud AWS -luettelon pom.xml tiedosto tätä käyttäen lohko:

<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>

Lopuksi SES-tuen lisäämiseksi meidän on sisällytettävä moduuliriippuvuus, joka on saatavana aloitusmoduulina spring-cloud-starter-aws-ses:

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

spring-cloud-starter-aws-ses sisältää transitiiviset riippuvuudet kohteelle spring-cloud-starter-awsja spring-cloud-aws-ses. spring-cloud-aws-ses SES-moduuli sisältää kaksi luokkaa: SimpleEmailServiceMailSender ja SimpleEmailServiceJavaMailSender.

  • - SimpleEmailServiceMailSender luokka käyttää Amazon Simple Email Service -palvelua sähköpostien lähettämiseen. Java Mail API ei ole tämän toteutuksen edellytys. Sitä voidaan käyttää yksinkertaisten sähköpostiviestien lähettämiseen ilman liitteitä.
  • - SimpleEmailServiceJavaMailSender luokka mahdollistaa liitteitä ja muita mime-elementtejä sisältävien sähköpostien lähettämisen.

Tämä siis kattaa kaikki perustarpeemme!

Pavun määrittäminen

Kuten edellä mainittiin, meidän on määriteltävä kaksi paputyyppiä: SimpleEmailServiceMailSender ja SimpleEmailServiceJavaMailSender. Voimme yksinkertaisesti välittää pääsyavaimen ja salaisen avaimen valtuuksiksi ja määrittää a MailSender papu, jota käytämme sähköpostien lähettämiseen:

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

Jotta voimme lähettää sähköposteja liitteineen, meidän on määritettävä SimpleEmailServiceJavaMailSender joka on toteutus JavaMailSender käyttöliittymä Springin postin abstraktiosta.

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Määrittelemme myös ominaisuudet, joista tiedot noudetaan application.yml:

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

Yksinkertaisen sähköpostin lähettäminen

Voimme lähettää yksinkertaisia ​​sähköposteja käyttämällä SimpleEmailServiceMailSender papu, jonka määritimme yllä. Määritetään palvelukerros tämän papun käyttämiseksi:

@Service
public class EmailService {

    @Autowired
    private MailSender mailSender;

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

Me kutsumme send() menetelmä MailSender bean lähettääksemme sähköpostimme. Meidän on myös läpäistävä SimpleMailMessage joka sisältää attribuutteja, kuten from, to, sähköpostimme teksti ja aihe. Joten määritellään a Controller luokka soittaa yllä olevaan palveluun REST API:n avulla:

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

Jos nyt suoritamme sovelluksen ja suoritamme seuraavan curl-toiminnon, se lähettää sähköpostin vahvistettuun sähköpostiosoitteeseen:

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'

Seuraavaksi voimme kirjautua sisään vastaanottajan sähköpostiosoitteeseen ja tarkistaa, onko vastaanottaja saanut sähköpostin.

Yksinkertaisen sähköpostin lähettäminen liitteenä

Määritämme palvelukerroksen, joka välittää liitteen mime-muodossa ja asetamme muut sähköpostiattribuutit, kuten from, to, teksti ja aihe:

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

Tässä me käytämme MimeMessageHelper luodaksesi liitteen sisältävän sähköpostin. Lopuksi määrittelemme Controller kerros läpäisemään SimpleMailMessage attribuutteja:

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

Jos nyt suoritamme sovelluksen ja suoritamme seuraavan curl-toiminnon, se lähettää sähköpostin vahvistettuun sähköpostiosoitteeseen:

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'

Seuraavaksi voimme kirjautua sisään vastaanottajan sähköpostiosoitteeseen ja tarkistaa, onko vastaanottaja saanut sähköpostin.

Sähköpostimallin lähettäminen liitteenä

Aiemmat näkemämme käyttötapaukset ovat hyviä kehitys- tai testausskenaarioihin, mutta tuotannossa käytämme yleensä sähköpostimallia, jossa on muuttujia, jotka korvataan API:n vastauksilla. Olimme aiemmin lisänneet riippuvuuden Apache Freemarker. Käytämme sitä mallin määrittämiseen ja lataamiseen prosessoitavaksi!

Tätä varten määritellään ensin yksinkertainen malli, anna sille nimi email-template.ftl ja aseta se sisään templates kansio alla 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>

Seuraavaksi meidän on määritettävä kokoonpanoluokka mallin lataamiseksi polusta ja lisäämiseksi papuksi. Tätä varten määrittelemme FreeMarkerConfigurationFactoryBean:

@Configuration
public class FreemarkerConfig {

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

Seuraavaksi määritämme palvelukerrosemme tämän mallin lataamiseksi ja luomme lopullisen viestin lähetettäväksi SES:lle:

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

Lopuksi määrittelemme a Controller kerros dynaamisten sähköpostimääritteiden välittämiseksi:

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

Jos nyt suoritamme sovelluksen ja suoritamme seuraavan curl-toiminnon, se lähettää sähköpostin vahvistettuun sähköpostiosoitteeseen:

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'

Seuraavaksi voimme kirjautua sisään vastaanottajan sähköpostiosoitteeseen ja tarkistaa, onko vastaanottaja saanut sähköpostin:

Freemarker-mallisähköposti

Henkilökohtaisen sähköpostin lähettäminen mallien avulla AWS SES:ssä

Edellisessä käyttötapauksessa käytimme staattista mallia sähköpostien lähettämiseen. Kuinka voimme mahdollistaa mallien suunnittelun dynaamisesti eri tarkoituksiin ja erityyppisille vastaanottajille? AWS SES:n avulla voimme luoda sähköpostimalleja lähettääksemme henkilökohtaisia ​​sähköposteja yhteen tai useampaan kohteeseen yhdellä toiminnolla.

Voimme luoda jopa 10,000 500 sähköpostimallia Amazon SES -tiliä kohden. Jokainen malli voi olla kooltaan enintään 50 kt, mukaan lukien sekä teksti- että HTML-osat. Jokaisessa puhelussa voimme lähettää jopa XNUMX kohdetta.

Luodaan siis nopeasti sähköpostimalli. Ensinnäkin voimme määrittää JSON-tiedoston käyttämällä seuraavaa mallia:

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

Tämä malli sisältää seuraavat attribuutit:

  • Mallin nimi: Tämä sisältää mallin nimen.
  • Aiheosa: Tämä sisältää sähköpostin aiherivin. Tässä omaisuudessa saattaa olla korvaavia tunnisteita. Nämä tunnisteet on muotoiltu seuraavasti: {{tagname}}. Voit syöttää arvon kohteelle {{tagname}} kullekin vastaanottajalle lähetettäessä sähköpostia.
  • HtmlPart: Tämä sisältää sähköpostin HTML-tekstin ja se voi sisältää myös korvaavia tunnisteita.
  • Tekstiosa: Tämä edustaa sähköpostin tekstiosaa. Tämä sähköpostin versio lähetetään vastaanottajille, joiden sähköpostiohjelmat eivät näe HTML-sähköposteja. Tässä omaisuudessa saattaa olla korvaavia tunnisteita.

Voimme tallentaa tämän tiedoston nimellä mytemplate.json. Lopuksi voimme käyttää AWS CLI -komentoa mallin luomiseen seuraavasti:

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

Seuraavaksi määritellään palvelukerros attribuuttien määrittämiseksi ja mallisähköpostien lähettämiseksi:

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

Voimme lisätä useita Destination osoitteita joukkosähköpostien lähettämiseen useille vastaanottajille. Meillä on käytössä sendTemplatedEmail() menetelmä AmazonSimpleEmailService käyttöliittymä tämän mallisähköpostin lähettämiseen. Meidän on myös välitettävä korvaavat tagit aiemmin luomamme mallin HTML-tekstissä.

Lopuksi määrittelemme a Controller kerros määrittääksesi REST API, joka välittää määritteet:

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

Seuraavaksi, kun suoritamme sovelluksen, voimme suorittaa seuraavan curl lähettääksesi mallisähköpostit:

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'

Nyt vastaanottaja saa vihdoin nähdä mallisähköpostin:

Mallipohjainen sähköposti

Pyydä pääsyä tuotantoon

Lopuksi, jotta voimme lähettää sähköposteja mille tahansa vastaanottajalle riippumatta siitä, onko vastaanottajan osoite tai verkkotunnus vahvistettu, meidän on lopulta poistettava tilimme hiekkalaatikosta. Kaikki identiteettimme, mukaan lukien From, Source, Senderja Return-Path osoitteet, on silti vahvistettava. Voimme lähettää tuotantoon pääsyä koskevan pyynnön "Tilin hallintapaneeli”-sivulle seuraavasti:

Tilin hallintapaneeli
Pyydä pääsyä tuotantoon

Voimme lähettää pyynnön täyttämällä kaikki yllä olevat tiedot AWS-konsolista. Sama voidaan lähettää myös AWS CLI:llä. Tämä olisi hyödyllistä, kun meidän on pyydettävä pääsyä suurelle määrälle identiteettejä ja haluaisimme automatisoida prosessin.

Yhteenveto

Tässä artikkelissa käsiteltiin Amazon Simple Email Servicen (SES) avainideoita ja Spring Cloud AWS:n tarjoamia kirjastoja käyttöliittymään. Lisäksi loimme Spring Boot -sovelluksen, jossa on REST API ja joka voi lähettää sähköposteja Spring Cloud AWS SES -moduulin kautta.

Sinulla pitäisi nyt olla vankka käsitys siitä, mitä Amazon Simple Email Service (SES) on ja kuinka voit käyttää sitä sähköpostien lähettämiseen.

Aikaleima:

Lisää aiheesta Stackabus