Mail mit Anhang senden in Spring / Java

Wir haben im letzten Blog-Eintrag gezeigt, wie man eine Mail in Spring/Java versenden kann. Wir wollen diese Klasse jetzt um eine Funktion erweitern, welche ein Mail mit Anhang versenden kann. So kann man z.B. Dokumente, Bilder usw. an eine Mail anhängen.

Der folgenden Funktion kann man neben den Mail-Parametern auch eine Liste von Datei-Pfaden übergeben, welche dann alle an das Mail angehängt werden:


@Service("emailService")
public class EmailService 
{
    @Autowired
    private JavaMailSender mailSender;

 
    // ...
  
    /** 
     * Versenden einer Email mit Attachement(s)
     */
    public void sendMailWithAttachements(String from, String to, String subject, String body, String... filePaths) throws MailException
    {
        MimeMessagePreparator preparator = new MimeMessagePreparator() 
        {
            public void prepare(MimeMessage mimeMessage) throws Exception {
                MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);	
        		
                mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
	        mimeMessage.setFrom(new InternetAddress(from));
	        helper.setSubject(subject);
	        helper.setText(body);
            
	        for (String filePath: filePaths) {
	            File file = new File(filePath); 
	            FileSystemResource fileSystemResource = new FileSystemResource(file);
	            helper.addAttachment(file.getName(), fileSystemResource);

                }
	    }
        
        };
        
        this.mailSender.send(preparator); 
    }

}Code-Sprache: Java (java)

Der Funktion können nun am Ende ein oder mehrere Dateipfade angegeben werden. Als Beispiel für einen Aufruf:

@Autowired
private EmailService emailService;

public void sendTestMail() {
    URL fontsdirResourceUrl = ResourceUtils.getURL("classpath:fonts");
    String pathToFont1 = fontsdirResourceUrl.getPath() + "Arial.TTF";
    String pathToFont2 = fontsdirResourceUrl.getPath() + "Arial-Narrow.TTF";


    
    // hier werden beispielhaft 2 Schrift-Dateien aus dem Ressourcen-Verzeichnis an die Mail angehängt
    this.emailService.sendMailWithAttachements("[email protected]", "[email protected]", "Test mit Anhang", "Bitte Font im Anhang verwenden", pathToFont1, pathToFont2);
}
Code-Sprache: JavaScript (javascript)