Afsendelse af emails via SendGrid
Denne vejledning er inspireret af dette blogindlæg
Følg disse video tutorials - og støt dig til vejledningen herunder for snippets etc:
- Opret en konto hos SendGrid
- Lav en
Sender Authentication
og brug en emailadresse som afsender og reply-to - der ikke er din studiemail. Men gerne gmail, hotmail etc. - Opret en
dynamic template
. Findes under menupunktetEmail API
- Opret en
API nøgle
- Opret et Java/Maven projekt
- Tilføj følende til
pom.xml
:
<dependencies>
<dependency>
<groupId>com.sendgrid</groupId>
<artifactId>sendgrid-java</artifactId>
<version>4.10.1</version> <!-- Use the latest version -->
</dependency>
</dependencies>
-
Opret SENDGRID_API_KEY som miljøvariabel i IntelliJ og sæt værdien til den du har fået fra SendGrid
-
Test om din miljøvariabel er rigtig opsat ved at køre følgende i Main:
String API_KEY = System.getenv("SENDGRID_API_KEY");
System.out.println(API_KEY);
Hvis det virker, skulle nøglen gerne blive udskrevet.
- Indsæt følgende i
Main
i stedet:
// Erstat xyx@gmail.com med din egen email, som er afsender
Email from = new Email("xyx@gmail.com");
from.setName("Johannes Fog Byggemarked");
Mail mail = new Mail();
mail.setFrom(from);
String API_KEY = System.getenv("SENDGRID_API_KEY");
Personalization personalization = new Personalization();
/* Erstat kunde@gmail.com, name, email og zip med egne værdier ****/
/* I test-fasen - brug din egen email, så du kan modtage beskeden */
personalization.addTo(new Email("kunde@gmail.com"));
personalization.addDynamicTemplateData("name", "Anders And");
personalization.addDynamicTemplateData("email", "anders@and.dk");
personalization.addDynamicTemplateData("zip", "2100");
mail.addPersonalization(personalization);
mail.addCategory("carportapp");
SendGrid sg = new SendGrid(API_KEY);
Request request = new Request();
try
{
request.setMethod(Method.POST);
request.setEndpoint("mail/send");
// indsæt dit skabelonid herunder
mail.templateId = "d-02687f175d1e4a5fb64da1bd3e97ea26";
request.setBody(mail.build());
Response response = sg.api(request);
System.out.println(response.getStatusCode());
System.out.println(response.getBody());
System.out.println(response.getHeaders());
}
catch (IOException ex)
{
System.out.println("Error sending mail");
throw ex;
}
-
Kør koden og kryds fingre for at mailen ligger i din indbakke.
-
Refactor koden, så du flytter den ud i sin egen
Util
klasse og metode:
public boolean sendMail(String to, String name, String email, String zip)
Lad metoden returnere en boolean, der fortæller om afsendelsen gik godt (response.getStatusCode() er 202)
- Tip: hvis du har brug for at lave flere forskellige typer emails, med flere forskellige parametre (andet end
to
,email
,zip
), så kan man f.eks. proppe værdierne i et hashmap og sende dem afsnit og derefter loope sig igennem map’et og indsætte i stil med:
personalization.addDynamicTemplateData("key", "value");
I givet fald ville det også være nødvendig at sende templateId
med som parameter.