J'ai envoyé un e-mail en Java

introduction

Depuis que j'ai été impliqué dans les outils MA, j'ai fait des recherches sur la livraison du courrier. J'ai créé un programme de distribution de courrier simple (courrier html) en utilisant le serveur smtp de Google.

Langue / quoi utiliser

・ Java -Mail.jar: lien de téléchargement -Activation.jar: lien de téléchargement ・ Serveur smtp de Google

Flux de processus

En tant que flux de traitement approximatif

authentification smtp → Contenu de la diffusion, destination, paramètres de l'expéditeur → Envoyer

C'est un flux simple ou normal.

codage

import

processus d'importation


import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import java.io.UnsupportedEncodingException;
import java.util.Date;

Tout d'abord, vous devez les importer.

authentification smtp

python


Properties props = new Properties();
//Paramètres du serveur SMTP. Configurez le serveur SMTP de Google ici
props.setProperty("mail.smtp.host","smtp.gmail.com"); 
//Changer le numéro de port pour SSL
props.setProperty("mail.smtp.port", "465");
//Réglage du délai d'expiration
props.setProperty("mail.smtp.connectiontimeout", "60000");
props.setProperty("mail.smtp.timeout", "60000");

//Authentification
props.setProperty("mail.smtp.auth", "true");
//Ce paramètre est requis lors de l'utilisation de SSL
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.socketFactory.port","465");

//Créer une session en utilisant les informations définies dans les accessoires
final Session session = Session.getInstance(props, new Authenticator() {
	protected PasswordAuthentication getPasswordAuthentication() {
        //Définissez ici votre compte Gmail et votre mot de passe
		return new PasswordAuthentication("[email protected]","your password");
	}
});

De cette façon, définissez les informations d'identification dans Propriétés et créez une session Les informations d'identification sont attribuées à la variable de type Session, session.

Contenu de la diffusion, destination, paramètres source

python


//Définir la session variable
MimeMessage contentMessage = new MimeMessage(session);
//Informations sur le contenu de l'e-mail
String mailContents = "<html><body><h1>hello</h1></body></html>"
try {
    //Définissez l'adresse source, le nom d'affichage et le code de caractère
	Address addFrom = new InternetAddress("[email protected]", "Monsieur A", "UTF-8");
	contentMessage.setFrom(addFrom);
    //Définir l'adresse de destination, le nom d'affichage, le code de caractère
	Address addTo = new InternetAddress("[email protected]","Monsieur B","UTF-8");
	contentMessage.addRecipient(Message.RecipientType.TO, addTo);
    //Définir le sujet
	contentMessage.setSubject("salut! !!","UTF-8");
    //Le type de contenu du courrier est spécifié. Dans ce cas, ce sera un mail HTML
	contentMessage.setHeader("Content-Type", "text/html; charset=UTF-8");
    //Définition du contenu du courrier
	contentMessage.setContent(mailContents, "text/html; charset=UTF-8");
    //Réglage tel que la date
	contentMessage.setSentDate(new Date());
} catch (MessagingException e) {
	e.printStackTrace();
} catch (UnsupportedEncodingException e) {
	e.printStackTrace();
}

Définir le contenu, la destination et la source de la diffusion Affectez-le à une variable appelée contentMessage de type MimeMessage. En passant, si vous définissez le type de contenu sur texte, vous pouvez remettre du courrier texte.

Envoyer

python


//envoyer un e-mail
try {
    //Définir le contentMessage plus tôt
	Transport.send(contentMessage);
} catch (AuthenticationFailedException e) {	
    //Échec d'authentification
	e.printStackTrace();
} catch (MessagingException e) {
	//Échec de la connexion au serveur smtp
	e.printStackTrace();
}

Cela enverra l'e-mail.

Résumé

Il semble que la livraison de courrier de base en Java soit fondamentalement comme ça. Pour rendre cela encore plus rapide, utilisez des fils, insérez des caractères dans le contenu, etc. C'est intéressant car vous pouvez faire différentes choses. Le code réel peut être trouvé sur le hub git ci-dessous, si vous le souhaitez.

Source: github

Recommended Posts

J'ai envoyé un e-mail en Java
Je souhaite envoyer un e-mail en Java.
J'ai fait une annotation en Java.
J'ai fait une roulette à Java.
Implémenter l'envoi d'e-mails en Java
J'ai essayé la métaprogrammation avec Java
J'ai écrit sur Java downcast d'une manière facile à comprendre
J'ai essayé d'utiliser l'instruction Extended for en Java
J'ai créé un PDF avec Java.
Essayez une expression If en Java
J'ai écrit le théorème de Gordobach en java
J'ai essayé d'utiliser JWT en Java
Exécuter un processus externe en Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
Mapper sans utiliser de tableau en java
J'ai essayé le nouveau yuan à Java
[Java] Envoyer un e-mail à l'aide d'Amazon SES
J'ai fait l'étalonnage de la caméra OpenCV en Java
[* Java *] J'ai participé au JJUG CCC 2019 Spring
Partition en Java
Changements dans Java 11
Janken à Java
Je veux ForEach un tableau avec une expression Lambda en Java
Taux circonférentiel à Java
FizzBuzz en Java
J'ai créé un programme de jugement des nombres premiers en Java
Envoyer des e-mails à l'aide d'Amazon SES SMTP en Java
Deuxième décoction: essayez une expression If en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai écrit un programme de jugement des nombres premiers en Java
J'ai créé un jeu Janken en Java (CLI)
rsync4j --Je veux toucher rsync en Java.
Ce que j'ai appris en Java (partie 2) Que sont les variables?
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Comment résoudre les problèmes d'expression en Java
J'ai essayé de développer une application en 2 langues
J'ai essayé de créer une compétence Alexa avec Java
J'ai écrit un programme de factorisation prime en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
J'ai fait un jeu de problèmes de calcul simple en Java
Essayé l'API Toot et Streaming de Mastodon en Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
Écrivez ABNF en Java et transmettez l'adresse e-mail
Je veux faire quelque chose comme "cls" en Java
NVL-ish guy en Java
Joindre des tableaux en Java
J'ai d'abord touché Java ②
"Hello World" en Java
Interface appelable en Java
J'ai essayé d'implémenter la notification push Firebase en Java
J'ai d'abord touché Java ③
[java] Lancer une exception
Commentaires dans la source Java
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Fonctions Azure en Java