Lorsqu'un membre oublie son mot de passe de connexion, il souhaite envoyer un e-mail à l'adresse e-mail enregistrée et appuyer sur le lien pour réinitialiser le mot de passe, alors envoyez un e-mail à l'application Web sur AWS. Implémentation de la fonction.
La fonction d'envoi de courrier est transformée en un fichier jar et en plusieurs parties.
J'ai trouvé les paramètres AWS plus gênants que la programmation.
VS Code Java Extension Pack Spring Boot Extension Pack
Comme décrit dans l'URL ci-dessous, connectez-vous à la console AWS et effectuez les étapes 1 à 6 de «Obtention des informations d'identification SMTP Amazon SES à l'aide de la console Amazon SES» pour obtenir le nom d'utilisateur SMTP et le mot de passe SMTP. ..
Une fois obtenus, le nom du serveur de messagerie et le numéro de port seront également affichés.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/smtp-credentials.html
Dans la palette de commandes VS Code, sélectionnez «Spring Initializr: Generate a Gradle Project» -> «Java» -> «Any GroupId» -> «Any ArtifactId» -> «Any version» -> «Les dépendances sont vides» et sélectionnez Gradle Project. Créer. (Il n'est pas nécessaire que ce soit Spring Boot ...)
Ajoutez une dépendance au fichier build.gradle pour obtenir le javax.mail.jar nécessaire pour envoyer du courrier à l'aide d'Amazon SES SMTP.
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'com.sun.mail:javax.mail:1.6.2' //← Ajouter ★
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
//↓ Ajouté au fait ★
bootJar {
enabled = false
}
jar {
enabled = true
baseName = 'aws-ses-send'
version = ''
from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
Utilisez le code du site AWS presque tel quel.
AmazonSES.java
package com.xxx.aws;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class AmazonSES {
// Replace [email protected] with your "From" address.
// This address must be verified.
static final String FROM = "Adresse e-mail de l'expéditeur";
static final String FROMNAME = "Nom de la source";
// Replace [email protected] with a "To" address. If your account
// is still in the sandbox, this address must be verified.
// static final String TO = "[email protected]";
// Replace smtp_username with your Amazon SES SMTP user name.
static final String SMTP_USERNAME = "Nom d'utilisateur SMTP";
// Replace smtp_password with your Amazon SES SMTP password.
static final String SMTP_PASSWORD = "Mot de passe SMTP";
// The name of the Configuration Set to use for this message.
// If you comment out or remove this variable, you will also need to
// comment out or remove the header below.
// static final String CONFIGSET = "ConfigSet"; //← Commentez si inutile ★
// Amazon SES SMTP host name.Cet exemple utilise l'ouest des États-Unis(Oregon) region.
// See https://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html#region-endpoints
// for more information.
static final String HOST = "Nom du serveur de messagerie";
// The port you will connect to on the Amazon SES SMTP endpoint.
static final int PORT =numéro de port;
// static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";
// 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 void send(String to,
String subject,
String body) throws Exception {
// Create a Properties object to contain connection configuration information.
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");
// Create a Session object to represent a mail session with the specified properties.
Session session = Session.getDefaultInstance(props);
// Create a message with the specified information.
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");
// Add a configuration set header. Comment or delete the
// next line if you are not using a configuration set
// msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET);//← Commentez si inutile ★
// Create a transport.
Transport transport = session.getTransport();
// Send the message.
try
{
System.out.println("Sending...");
// Connect to Amazon SES using the SMTP username and password you specified above.
transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
// Send the email.
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
{
// Close and terminate the connection.
transport.close();
}
}
}
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-smtp-java.html
Connectez-vous à la console AWS et exécutez les étapes 1 à 7 de «Vérifier votre adresse e-mail à l'aide de la console Amazon SES» comme décrit dans l'URL ci-dessous pour enregistrer une adresse e-mail valide en tant qu'expéditeur. ..
Seule l'adresse e-mail après cette procédure peut être utilisée comme adresse e-mail de l'expéditeur.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/verify-email-addresses-procedure.html
Dans cet état, vous ne pouvez pas sélectionner librement la destination et envoyer le courrier.
Comme pour l'expéditeur, l'adresse e-mail du destinataire doit être vérifiée à l'avance pour voir si elle peut être envoyée en tant que destinataire et elle doit être correcte.
La situation est "dans le bac à sable".
Vous devez "sortir du bac à sable" pour sélectionner librement la destination et envoyer le mail.
Comme décrit dans l'URL ci-dessous, connectez-vous à la console AWS, effectuez les étapes 1 à 9 de «Sortir du bac à sable Amazon SES» et obtenez l'autorisation du centre de support.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/request-production-access.html
Avec permission, la vérification préalable de la destination n'est pas requise.
Créez un fichier jar en implémentant la commande suivante à partir du terminal VS Code.
.\gradlew build
Vous pouvez envoyer un e-mail en plaçant le fichier jar créé dans le projet appelant et en appelant la méthode d'envoi implémentée.
c'est tout.
Recommended Posts