Depuis que j'ai eu l'occasion d'utiliser le SES (Simple Email Service) d'AWS, j'aimerais résumer comment envoyer un e-mail avec un programme Java en tant que révision. Il existe deux méthodes, l'une consiste à utiliser SMTP et l'autre à utiliser AWS SDK. Pour l'instant, je vais décrire la méthode SMTP. J'ajouterai le kit AWS SDK à une date ultérieure.
--Amazon SES (Simple Email Service) est un service de livraison de courrier fourni par Amazon.
Avant de créer le programme, vous devez effectuer les opérations suivantes:
Le compte est créé en tant que nouvel utilisateur dans un environnement de test appelé sandbox, vous ne pouvez donc envoyer et recevoir des e-mails qu'avec l'adresse e-mail confirmée. Pour envoyer des e-mails à des adresses e-mail non vérifiées, augmenter le nombre d'e-mails que vous pouvez envoyer par jour et envoyer des e-mails plus rapidement, vous devez déplacer votre compte hors du bac à sable.
Ceci termine la vérification de l'adresse e-mail. Vous pouvez vérifier si vous pouvez envoyer et recevoir des e-mails en cliquant sur le bouton «Envoyer un e-mail de test».
Vous pouvez voir l'utilisateur SMTP créé dans IAM Console> Access Management> Users.
$ java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
pom.xml
<!--Dépendances-->
<dependencies>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
SesSmtpSample.java
public class SesSmtpSample {
//Adresse de l'expéditeur et nom de l'expéditeur(Adresse e-mail authentifiée par la console SES)
static final String FROM = "[email protected]";
static final String FROMNAME = "Sender Name";
//adresse de destination(Adresse e-mail authentifiée par la console SES)
static final String TO = "[email protected]";
//Nom d'utilisateur et mot de passe SMTP créés dans la console SES
static final String SMTP_USERNAME = "smtp_username";
static final String SMTP_PASSWORD = "smtp_password";
//Spécifiez le jeu de configuration créé dans la console SES. Utilisé lors de l'enregistrement des journaux de messagerie. Commentez car ce n'est pas nécessaire cette fois
// static final String CONFIGSET = "ConfigSet";
//Point de terminaison SMTP Amazon SES(Nous si la région est l'Oregon-west-2)
static final String HOST = "email-smtp.us-west-2.amazonaws.com";
//Numéro de port du point de terminaison SMTP Amazon SES.
static final int PORT = 587;
//Sujet du courriel
static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";
//Texte
static final String BODY = String.join(
System.getProperty("line.separator"),
"<h1>Amazon SES SMTP Email Test</h1>",
"<p>This email was sent with Amazon SES using the ",
"<a href='https://github.com/javaee/javamail'>Javamail Package</a>",
" for <a href='https://www.java.com'>Java</a>."
);
public static void main(String[] args) throws Exception {
//Définir un serveur SMTP
Properties props = System.getProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", PORT);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
//Établir une session de messagerie
Session session = Session.getDefaultInstance(props);
//Écrire un email
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(FROM,FROMNAME));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
msg.setSubject(SUBJECT);
msg.setContent(BODY,"text/html");
//Définissez le jeu de configuration. Je ne vais pas l'utiliser cette fois, alors commentez
//msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET);
Transport transport = session.getTransport();
//envoyer un e-mail
try {
System.out.println("Sending...");
//Connectez-vous au serveur SMTP
transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
//envoyer un e-mail
transport.sendMessage(msg, msg.getAllRecipients());
System.out.println("Email sent!");
} catch (Exception ex) {
System.out.println("The email was not sent.");
System.out.println("Error message: " + ex.getMessage());
} finally {
//Fin de connexion
transport.close();
}
}
}
Les points de terminaison SMTP varient selon la région. Vous pouvez le trouver dans la référence AWS (https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region).
Puisqu'il existe un document japonais d'Amazon SES, en gros, si vous suivez le document, vous pouvez envoyer un e-mail sans aucun problème.
Recommended Posts