1. Introduction au courrier électronique
Un email est constitué de nombreuses informations. Les principales informations sont les suivantes. D'autres ne sont pas prises en compte pour l'instant, comme la copie carbone, etc. :
1. Destinataire : adresse e-mail du destinataire, telle que [email protected]
2. Nom du destinataire : il sera affiché lorsque la plupart des e-mails seront affichés, par exemple loadfate [email protected]
3. Expéditeur : adresse e-mail de l'expéditeur
4. Nom de l’expéditeur :
5. Objet : le titre de l'e-mail
6. Contenu et pièces jointes : le contenu principal de l'e-mail
2. Étapes générales pour envoyer des e-mails à l'aide de Java
Dans les projets généraux, il n'y a pas de serveur de messagerie séparé. En général, les serveurs d'autres personnes sont utilisés.
1. Configurez le serveur SMTP : Différents serveurs de messagerie ont des adresses différentes. Par exemple : smtp.qq.com représente le serveur SMTP de Tencent.
2. Autorisation : utilisez le compte et le mot de passe du serveur pour vous connecter au serveur.
3. Créez un e-mail : créez un e-mail contenant toutes les informations, telles que l'expéditeur, le destinataire, le contenu, etc.
4. Définissez les propriétés de l'e-mail : ajoutez des données aux propriétés de l'e-mail.
5. Envoi d'e-mails : Les colis étant différents, les méthodes d'envoi sont incohérentes.
3. Java Mail et Apache Mail
Apache Mail est une encapsulation de Java Mail, plus facile à utiliser et offrant un meilleur sens de la hiérarchie logique.
Pour utiliser Java Mail, il vous suffit d'importer un package jar : mail.jar.
Lorsque vous utilisez Apache Mail, vous devez importer deux packages jar : mail.jar et commons-email-1.3.1.jar.
4. Utilisez Java Mail pour envoyer des e-mails
Copiez le code comme suit :
public static void main (String[] args) lève une exception {
utilisateur de chaîne final = "779554589" ;
mot de passe de chaîne final = "" ;
Chaîne fromAddress = "[email protected]" ;
Chaîne toAddress = "[email protected]" ;
String subject = « Sujet du test de l'e-mail » ;
String content = "Ceci est un e-mail de test<b>haha</b>" ;
//Paramètres de configuration
Propriétés props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.qq.com");
//Méthode 1 : Utiliser un objet de transport pour envoyer un e-mail
{
// Générer une session via des paramètres
Session session = Session.getInstance(props);
//Activer le mode débogage
session.setDebug(true);
//Créer un email et définir les informations
Message message = nouveau MimeMessage (session);
message.setFrom (nouvelle adresse Internet (fromAddress));
message.setSubject(sujet);
message.setText(content);
//Créer un transfert
Transport transport = session.getTransport();
//Connectez-vous au serveur SMTP
transport.connect(utilisateur, mot de passe);
//envoyer
transport.sendMessage(message, new InternetAddress[] { new InternetAddress(toAddress) });
transport.close();
}
//Méthode 2 : Utiliser la méthode statique de la classe Transport pour envoyer des emails
{
//Obtenir une connexion autorisée lors de la génération de la session
Session session = Session.getInstance(props, new Authenticator() {
@Outrepasser
protégé Mot de passeAuthentication getPasswordAuthentication() {
renvoyer un nouveau mot de passeAuthentication (utilisateur, mot de passe);
}
});
session.setDebug(true);
//Créer un email et définir les informations
Message message = nouveau MimeMessage (session);
message.setSubject(sujet);
message.setFrom (nouvelle adresse Internet (fromAddress));
message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
message.setContent(content, "text/html;charset=utf-8");
//Envoyer directement, le message est généré via la session autorisée
Transport.send(message);
}
}
5. Utilisez Apache Mail pour envoyer des e-mails
Copiez le code comme suit :
classe publique ApacheMailTest {
// serveur SMTP
chaîne privée nom d'hôte = "smtp.qq.com" ;
//Compte et mot de passe
chaîne privée nom d'utilisateur = "779554589" ;
private String password = "Ceci est un secret" ;
// expéditeur
chaîne privée fromAddress = "[email protected]" ;
// Nom de l'expéditeur
chaîne privée fromName = "loadfate" ;
public static void main (String[] args) lève une exception {
//Destinataire et nom du destinataire
Chaîne toAddress = "[email protected]" ;
Chaîne toName = "loadfate" ;
Test ApacheMailTest = nouveau ApacheMailTest();
// Toutes les exceptions sont gérées pour une navigation facile
test.sendSimpleEmail(toAddress, toName);
test.sendHtmlEmail(toAddress, toName);
test.sendMultiPartEmail(toAddress, toName);
System.out.println("Envoi terminé");
}
//Envoyer un simple email, semblable à un message
public void sendSimpleEmail (String toAddress, String toName) lève une exception {
SimpleEmail email = new SimpleEmail();
email.setHostName(hostName);//Définir le serveur SMTP
email.setAuthentication(userName, password);//Définir les informations d'autorisation
email.setCharset("utf-8");
email.setFrom(fromAddress, fromName, "utf-8");//Définir les informations sur l'expéditeur
email.addTo(toAddress, toName, "utf-8");//Définir les informations du destinataire
email.setSubject("Test Subject");//Définir le sujet
email.setMsg("Ceci est un test simple !");//Définir le contenu de l'e-mail
email.send();//Envoyer un e-mail
}
//Envoyer un email avec du contenu HTML
public void sendHtmlEmail (String toAddress, String toName) lève une exception {
HtmlEmail email = new HtmlEmail();
email.setHostName(hostName);
email.setAuthentication (nom d'utilisateur, mot de passe);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Ceci est un email HTML");
// Définir le contenu HTML. En utilisation réelle, vous pouvez lire le code HTML écrit à partir du texte.
email.setHtmlMsg("<div style='width:100px;height:200px;'>a</div>");
email.send();
}
//Envoyer des e-mails complexes, y compris des pièces jointes, etc.
public void sendMultiPartEmail (String toAddress, String toName) lève une exception {
E-mail MultiPartEmail = null ;
email = nouveau MultiPartEmail();
email.setHostName(hostName);
email.setAuthentication (nom d'utilisateur, mot de passe);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Ceci est un email avec des pièces jointes");
email.setMsg("<a href='#'>Tester le contenu</a>");
//Ajouter du contenu supplémentaire à l'e-mail
Pièce jointe EmailAttachment = new EmailAttachment();
attachment.setPath("D://mail.txt");//fichier local
// attachment.setURL(nouvelle URL("http://xxx/a.gif"));//fichier distant
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Informations de description");
// Définit le nom d'affichage de la pièce jointe, qui doit être codé, sinon le chinois sera tronqué
attachment.setName(MimeUtility.encodeText("Mail.txt"));
//Ajouter une pièce jointe à l'e-mail
email.attach(pièce jointe);
email.send();
}
}
6. Dossier du projet de pièce jointe : maildemo
Adresse de téléchargement : http://pan.baidu.com/s/1bn1Y6BX
Si vous avez des questions ou des suggestions, veuillez me contacter
Description du fichier :
1. maildemo.zip : code source de maildemo
2. mail.jar : package Jar de Java Mail
3. commons-email-1.3.1.jar : package jar d'Apache Mail