Da ich die Möglichkeit hatte, den SES (Simple Email Service) von AWS zu verwenden, möchte ich als Überprüfung zusammenfassen, wie eine E-Mail mit einem Java-Programm gesendet wird. Es gibt zwei Methoden: Die eine ist die Verwendung von SMTP und die andere die Verwendung von AWS SDK. Im Moment werde ich die SMTP-Methode beschreiben. Ich werde das AWS SDK zu einem späteren Zeitpunkt hinzufügen.
Bevor Sie das Programm erstellen, müssen Sie folgende Schritte ausführen:
Das Konto wird als neuer Benutzer in einer Testumgebung namens Sandbox erstellt, sodass Sie nur E-Mails mit der bestätigten E-Mail-Adresse senden und empfangen können. Um E-Mails an nicht bestätigte E-Mail-Adressen zu senden, die Anzahl der E-Mails zu erhöhen, die Sie pro Tag senden können, und E-Mails mit hoher Geschwindigkeit zu senden, müssen Sie Ihr Konto aus der Sandbox verschieben.
Damit ist die Überprüfung der E-Mail-Adresse abgeschlossen. Sie können überprüfen, ob Sie E-Mails senden und empfangen können, indem Sie auf die Schaltfläche "Test-E-Mail senden" klicken.
Sie können den SMTP-Benutzer sehen, der unter IAM-Konsole> Zugriffsverwaltung> Benutzer erstellt wurde.
$ 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
<!--Abhängigkeiten-->
<dependencies>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
SesSmtpSample.java
public class SesSmtpSample {
//Absenderadresse und Absendername(Von der SES-Konsole authentifizierte E-Mail-Adresse)
static final String FROM = "[email protected]";
static final String FROMNAME = "Sender Name";
//Zieladresse(Von der SES-Konsole authentifizierte E-Mail-Adresse)
static final String TO = "[email protected]";
//SMTP-Benutzername und -Kennwort in der SES-Konsole erstellt
static final String SMTP_USERNAME = "smtp_username";
static final String SMTP_PASSWORD = "smtp_password";
//Geben Sie den in der SES-Konsole erstellten Konfigurationssatz an. Wird beim Speichern von E-Mail-Protokollen verwendet. Kommentieren Sie aus, da dies diesmal nicht erforderlich ist
// static final String CONFIGSET = "ConfigSet";
//Amazon SES SMTP-Endpunkt(Uns, wenn die Region Oregon ist-west-2)
static final String HOST = "email-smtp.us-west-2.amazonaws.com";
//Amazon SES SMTP-Endpunkt-Portnummer.
static final int PORT = 587;
//E-Mail Betreff
static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";
//Text
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 {
//Definieren Sie einen SMTP-Server
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");
//E-Mail-Sitzung einrichten
Session session = Session.getDefaultInstance(props);
//Mail schreiben
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");
//Stellen Sie den Konfigurationssatz ein. Ich werde es dieses Mal nicht benutzen, also kommentiere es aus
//msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET);
Transport transport = session.getTransport();
//E-Mail senden
try {
System.out.println("Sending...");
//Stellen Sie eine Verbindung zum SMTP-Server her
transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
//E-Mail senden
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 {
//Verbindungsende
transport.close();
}
}
}
SMTP-Endpunkte variieren je nach Region. Sie finden es in der AWS-Referenz (https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region).
Da es ein japanisches Dokument von Amazon SES gibt, können Sie, wenn Sie dem Dokument folgen, problemlos eine E-Mail senden.
Recommended Posts