Spring - Envoi d’e-mail avec pièce jointe

Printemps - Envoi d'e-mails avec pièce jointe

Voici un exemple d'utilisation de Spring pour envoyer des e-mails contenant des pièces jointes via le serveur SMTP Gmail. Pour contenir la pièce jointe dans votre e-mail, vous devez utiliser lesJavaMailSender & MimeMessage de Spring, au lieu deMailSender & SimpleMailMessage.

1. Dépendance du projet

Ajoutez la dépendance JavaMail et Spring.

Fichier: pom.xml


  4.0.0
  com.example.common
  SpringExample
  jar
  1.0-SNAPSHOT
  SpringExample
  http://maven.apache.org

  
    
        Java.Net
        http://download.java.net/maven/2/
    
  

  

    
        junit
        junit
        3.8.1
        test
    

    
    
        javax.mail
        mail
        1.4.3
    

    
    
        org.springframework
        spring
        2.5.6
    

  

2. Expéditeur de courrier de Spring

Vous devez utiliserJavaMailSender au lieu de MailSender pour envoyer des pièces jointes et attacher les ressources avecMimeMessageHelper. Dans cet exemple, il obtiendra le fichier texte «c: \ log.txt» de votre système de fichiers (FileSystemResource) en tant que pièce jointe à un e-mail.

En plus du système de fichiers, vous pouvez également obtenir toutes les ressources du chemin URL (UrlResource), Classpath (ClassPathResource), InputStream (InputStreamResource)… veuillez vous référer aux classes implémentées deAbstractResource de Spring .

Fichier: MailMail.java

package com.example.common;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailParseException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

public class MailMail
{
    private JavaMailSender mailSender;
    private SimpleMailMessage simpleMailMessage;

    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
        this.simpleMailMessage = simpleMailMessage;
    }

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void sendMail(String dear, String content) {

       MimeMessage message = mailSender.createMimeMessage();

       try{
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        helper.setFrom(simpleMailMessage.getFrom());
        helper.setTo(simpleMailMessage.getTo());
        helper.setSubject(simpleMailMessage.getSubject());
        helper.setText(String.format(
            simpleMailMessage.getText(), dear, content));

        FileSystemResource file = new FileSystemResource("C:\\log.txt");
        helper.addAttachment(file.getFilename(), file);

         }catch (MessagingException e) {
        throw new MailParseException(e);
         }
         mailSender.send(message);
         }
}

3. Fichier de configuration du bean

Configurez le bean mailSender, le modèle d'e-mail et spécifiez les détails de l'e-mail pour le serveur SMTP Gmail.

Fichier: Spring-Mail.xml




    
    
    
    

    
        
            true
            true
        
    



    
    




    
    
    
    
    
        
    
    


4. Exécuter

package com.example.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App
{
    public static void main( String[] args )
    {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("Spring-Mail.xml");

        MailMail mm = (MailMail) context.getBean("mailMail");
        mm.sendMail("Yong Mook Kim", "This is text content");

    }
}

sortie

 Dear Yong Mook Kim,
 Mail Content : This is text content

 Attachment : log.txt

Télécharger le code source