English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Mail Spring

Le cadre Spring fournit de nombreux interfaces et classes utiles pour envoyer et recevoir des emails.

org.springframework.mail Le paquet est le paquet racine fournissant le support pour les emails dans le cadre Spring.

API Spring Java Mail

Les interfaces et les classes de support Java Mail dans le cadre Spring sont les suivantes:

Interface MailSender: C'est l'interface racine. Elle fournit les fonctionnalités de base pour envoyer des emails simples. Interface JavaMailSender: C'est une sous-interface de MailSender. Elle prend en charge les messages MIME. Elle travaille principalement avec Classe MimeMessageHelper En utilisant ces classes ensemble, pour créer JavaMail Classe MimeMessage , ainsi que les pièces jointes, etc. Le cadre Spring recommande son utilisation MimeMessagePreparator Mécanisme pour utiliser cette interface. Classe JavaMailSenderImpl: Elle fournit une implémentation de l'interface JavaMailSender. Elle prend en charge les messages MIME JavaMail et les messages SimpleMailMessage de Spring. Classe SimpleMailMessage: Utilisé pour créer des emails simples, y compris de, à, copie à, sujet et texte de l'email. Interface MimeMessagePreparator: C'est une interface de callback utilisée pour préparer des messages MIME JavaMail. Classe MimeMessageHelper: C'est une classe d'aide utilisée pour créer des messages MIME. Elle prend en charge des éléments en ligne, tels que des images, des pièces jointes typiques et du contenu texte HTML.

Exemple d'envoi d'e-mails via le serveur Gmail dans Spring

Utilisation de deux classes de courrier électronique Spring:

SimpleMailMessage Pour créer des messages. JavaMailSenderImpl Pour envoyer des messages.

Vous devez créer les fichiers suivants pour envoyer des e-mails via le cadre Spring.

MailMail.java applicationContext.xml Test.java Vous devez charger les fichiers mail.jar et activation.jar pour exécuter cet exemple.

Téléchargez mail.jar et Activation.jar ou accédez au site Web d'Oracle pour télécharger la dernière version.


1)MailMail.java

C'est une classe simple définissant l'attribut mailSender. En temps d'exécution, un objet MailSender sera fourni à cet attribut.

Dans la méthode sendMail(), nous créons une instance de SimpleMailMessage et stockons les informations (par exemple, de, à, sujet et message) dans cet objet.

Ici, nous utilisons la méthode send() de l'interface MailSender pour envoyer un e-mail simple.

package com.w3codebox;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
 
public class MailMail{
  private MailSender mailSender;
 
  public void setMailSender(MailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(String from, String to, String subject, String msg) {
        //création du message
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);
    message.setSubject(subject);
    message.setText(msg);
        //envoi du message
    mailSender.send(message); 
  }
}

2)applicationContext.xml

Dans ce fichier xml, nous avons créé un bean pour la classe JavaMailSenderImpl. Nous devons définir les valeurs des propriétés suivantes:

Hôte Nom d'utilisateur Mot de passe javaMailProperties

Nous allons également utiliser l'attribut mailSender pour créer un bean pour la classe MailMail. Actuellement, nous allons définir l'instance de la classe JavaMailSenderImpl dans l'attribut mailSender de la classe MailMail.

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns="http://www.springframework.org/schema/beans
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
  xmlns:p="http://www.springframework.org/schema/p
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="smtp.gmail.com"} />
  <property name="username" value="[email protected]" />
  <property name="password" value="votreMotDePasseGmail" />
  </property>
     </props>
              <prop key="mail.smtp.auth">true</prop>/prop>
              <prop key="mail.smtp.socketFactory.port">465</prop>
              <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
              <prop key="mail.smtp.port">465</prop>
        </props>
  </property>
</bean>
<bean id="mailMail" class="com.w3codebox.MailMail">
  <property name="mailSender" ref="mailSender"> />
</bean>
</beans>

3)Test.java

Cette classe récupère le bean mailMail à partir du fichier applicationContext.xml et appelle la méthode sendMail de la classe MailMail.

package com.w3codebox;
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test { 
public static void main(String[] args) {
  
Resource r=new ClassPathResource("applicationContext.xml");
BeanFactory b=new XmlBeanFactory(r);
MailMail m=(MailMail)b.getBean("mailMail");
String expéditeur="[email protected]";//écrivez ici l'ID Gmail de l'expéditeur
String destinataire="[email protected]";//écrivez ici l'ID du destinataire
m.sendMail(sender,receiver,"hi","Bienvenue");
  
System.out.println("success");
}
}

Comment exécuter cet exemple

Charger le fichier jar spring pour core et Java mail Charger les fichiers mail.jar et activation.jar Modifier les propriétés utilisateur et mot de passe dans applicationContext.xml et spécifier votre ID e-mail et mot de passe gmail. Modifier l'ID e-mail de l'expéditeur et l'ID e-mail du destinataire dans le fichier Test.java. Compiler et exécuter la classe Test


Exemple de serveur envoyant un e-mail avec Spring fourni par le fournisseur d'hébergement

Si vous avez votre propre site, vous pouvez utiliser le serveur de messagerie. Les fichiers MailMail.java et Test sont identiques. Vous devez simplement modifier l'ID e-mail de l'expéditeur dans le fichier Test.java. Des modifications doivent être apportées dans applicationContext.xml.

Dans le fichier applicationContext.xml, nous utilisons :

mail.unitedsquaad.com en tant que nom d'hôte. Changez-le. [email protected] en tant que nom d'utilisateur. Changez-le. xxxxx en tant que mot de passe. Changez-le.

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns="http://www.springframework.org/schema/beans
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
  xmlns:p="http://www.springframework.org/schema/p
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="mail.unitedsquaad.com" />
  <property name="username" value="[email protected]" />
  <property name="password" value="xxxxx" />
 
  </property>
     </props>
              <prop key="mail.smtp.auth">true</prop>/prop>
           </props>
  </property>
</bean>
<bean id="mailMail" class="MailMail">
  <property name="mailSender" ref="mailSender"> />
</bean>
 
</beans>

l'envoi d'e-mails à plusieurs destinataires

Vous pouvez utiliser la classe SimpleMailMessage pour envoyer un e-mail à plusieurs destinataires. La classe SimpleMailMessage permet setTo(String []destinataires)Cette méthode est utilisée pour envoyer un message à plusieurs destinataires. Voyons un exemple de code simple.

      ....
  public void sendMail(String from, String[] to, String subject, String msg) {
        //création du message
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);//passage d'un tableau de destinataires
    message.setSubject(subject);
    message.setText(msg);
        //envoi du message
    mailSender.send(message); 
  }
     ...

Exemple de Spring MimeMessagePreparator

Nous pouvons utiliser l'interface MimeMessagePreparator pour envoyer des messages mime. Elle possède une méthode prepare(MimeMessage message).

Voyons un exemple de code simple pour envoyer un message mime.

  import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class MailMail{
  private JavaMailSender mailSender;
 
  public void setMailSender(JavaMailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(final String from, final String to, final String subject, final String msg) {
      
    MimeMessagePreparator messagePreparator = new MimeMessagePreparator() {
          
                public void prepare(MimeMessage mimeMessage) throws Exception {
                   mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
                   mimeMessage.setFrom(new InternetAddress(from));
                   mimeMessage.setSubject(subject);
                   mimeMessage.setText(msg);
                }
        };
        mailSender.send(messagePreparator);
  }
}

Les fichiers applicationContext.xml et Test.java sont identiques à ceux fournis ci-dessus.


Envoi d'une pièce jointe via un exemple de Spring MimeMessageHelper

Nous pouvons envoyer un message MIME avec une pièce jointe en utilisant l'aide de la classe MimeMessageHelper de Spring. Il est recommandé d'utiliser MimeMessagePreparator.

Voyons un exemple simple de code pour envoyer un message MIME avec une pièce jointe (image).

import java.io.File;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class MailMail{
  private JavaMailSender mailSender;
 
  public void setMailSender(JavaMailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail(final String from, final String to, final String subject, final String msg) {
    try{
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(to);
    helper.setSubject(subject);
    helper.setText(msg);
    // attacher le fichier
    FileSystemResource file = new FileSystemResource(new File("c:",/rr.jpg"));
    helper.addAttachment("mybrothermage.jpg", file);//l'image sera envoyée sous ce nom
    mailSender.send(message);
    catch (MessagingException e) { e.printStackTrace(); }
  }
}

Les fichiers applicationContext.xml et Test.java sont identiques à ceux fournis ci-dessus.