Wenn ein Mitglied sein Anmeldekennwort vergisst, möchte es eine E-Mail an die registrierte E-Mail-Adresse senden und auf den darin enthaltenen Link klicken, um das Kennwort zurückzusetzen. Senden Sie daher eine E-Mail an die Web-App von AWS. Implementierte die Funktion.
Die Mail-Sendefunktion wird in eine JAR-Datei und in Teile umgewandelt.
Ich fand die AWS-Einstellungen problematischer als die Programmierung.
VS Code Java Extension Pack Spring Boot Extension Pack
Melden Sie sich bei der AWS-Konsole an und führen Sie die Schritte 1 bis 6 unter "Abrufen von Amazon SES-SMTP-Anmeldeinformationen mithilfe der Amazon SES-Konsole" aus, um den SMTP-Benutzernamen und das SMTP-Kennwort abzurufen, wie in der folgenden URL beschrieben. ..
Nach dem Erhalt werden auch der Name des Mailservers und die Portnummer angezeigt.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/smtp-credentials.html
Wählen Sie in der VS Code-Befehlspalette "Spring Initializr: Generieren eines Gradle-Projekts" -> "Java" -> "Beliebige Gruppen-ID" -> "Beliebige Artefakt-ID" -> "Beliebige Version" -> "Abhängigkeiten sind leer" und wählen Sie "Gradle-Projekt". Erstellen. (Es muss nicht Spring Boot sein ...)
Fügen Sie der Datei build.gradle eine Abhängigkeit hinzu, um die Datei javax.mail.jar abzurufen, die zum Senden von E-Mails mit Amazon SES SMTP erforderlich ist.
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'com.sun.mail:javax.mail:1.6.2' //← Hinzufügen ★
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
//↓ Übrigens hinzugefügt ★
bootJar {
enabled = false
}
jar {
enabled = true
baseName = 'aws-ses-send'
version = ''
from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
Verwenden Sie den Code von der AWS-Site fast so wie er ist.
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 = "Absender-E-Mail-Adresse";
static final String FROMNAME = "Quellenname";
// 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 = "SMTP-Benutzername";
// Replace smtp_password with your Amazon SES SMTP password.
static final String SMTP_PASSWORD = "SMTP-Passwort";
// 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"; //← Bei Bedarf auskommentieren ★
// Amazon SES SMTP host name.In diesem Beispiel wird der Westen der Vereinigten Staaten verwendet(Oregon) region.
// See https://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html#region-endpoints
// for more information.
static final String HOST = "Name des Mailservers";
// The port you will connect to on the Amazon SES SMTP endpoint.
static final int PORT =Port-Nummer;
// 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);//← Bei Bedarf auskommentieren ★
// 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
Melden Sie sich bei der AWS-Konsole an und führen Sie die Schritte 1 bis 7 unter "Überprüfen Sie Ihre E-Mail-Adresse mithilfe der Amazon SES-Konsole" aus, wie in der folgenden URL beschrieben, um eine gültige E-Mail-Adresse als Absender zu registrieren. ..
Nur die E-Mail-Adresse nach diesem Vorgang kann als Absender-E-Mail-Adresse verwendet werden.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/verify-email-addresses-procedure.html
In diesem Zustand können Sie das Ziel nicht frei auswählen und die E-Mail senden.
Wie beim Absender muss die E-Mail-Adresse des Empfängers im Voraus überprüft werden, um festzustellen, ob sie als Empfänger gesendet werden kann, und sie muss in Ordnung sein.
Die Situation ist "im Sandkasten".
Sie müssen "aus der Sandbox gehen", um das Ziel frei auszuwählen und die E-Mail zu senden.
Melden Sie sich wie in der folgenden URL beschrieben bei der AWS-Konsole an, führen Sie die Schritte 1 bis 9 unter "Aus der Amazon SES-Sandbox entfernen" aus und holen Sie die Berechtigung vom Support Center ein.
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/request-production-access.html
Mit Genehmigung ist keine Vorabprüfung des Ziels erforderlich.
Erstellen Sie eine JAR-Datei, indem Sie den folgenden Befehl vom VS-Code-Terminal aus implementieren.
.\gradlew build
Sie können eine E-Mail senden, indem Sie die erstellte JAR-Datei in das aufrufende Projekt einfügen und die implementierte Sendemethode aufrufen.
das ist alles.
Recommended Posts