Invio di e-mail con allegati in Java

1. Panoramica

In questo breve tutorial, impareremo come inviare e-mail con allegati singoli e multipli in Java utilizzando l' API JavaMail .

2. Configurazione del progetto

In questo articolo, creiamo un semplice progetto Maven con dipendenza javax.mail :

 javax.mail mail 1.5.0-b01 

3. Invio di posta con allegati

Innanzitutto, dobbiamo configurare le credenziali del provider di servizi di posta elettronica. Quindi, l' oggetto Session viene creato fornendo l'host di posta elettronica, la porta, il nome utente e la password. Tutti questi dettagli sono forniti dal servizio host di posta elettronica. Possiamo utilizzare qualsiasi server di test SMTP falso per il nostro codice.

L' oggetto Session funzionerà come factory di connessione per gestire la configurazione e l'autenticazione per JavaMail .

Ora che abbiamo un oggetto Session , andiamo oltre e creiamo l' oggetto MimeMessage e MimeBodyPart . Usiamo questi oggetti per creare il messaggio di posta elettronica:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("Test Mail Subject"); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Mail Body"); 

Nello snippet sopra, abbiamo creato l' oggetto MimeMessage con i dettagli richiesti come from, to e subject. Quindi, abbiamo un oggetto MimeBodyPart con il corpo dell'email.

Ora, dobbiamo creare un altro MimeBodyPart per aggiungere un allegato nella nostra posta:

MimeBodyPart attachmentPart = new MimeBodyPart(); attachmentPart.attachFile(new File("C:\\Document1.txt")); 

Ora abbiamo due oggetti MimeBodyPart per una sessione di posta. Quindi dobbiamo creare un oggetto MimeMultipart e quindi aggiungere entrambi gli oggetti MimeBodyPart in esso:

Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(attachmentPart); 

Infine, il MimeMultiPart viene aggiunto all'oggetto MimeMessage come contenuto della nostra posta e il metodo Transport.send () viene richiamato per inviare il messaggio:

message.setContent(multipart); Transport.send(message); 

Per riassumere, il messaggio contiene MimeMultiPart che contiene inoltre più MimeBodyPart (s) . È così che assembliamo l'email completa.

Inoltre, per inviare più allegati puoi semplicemente aggiungere un altro MimeBodyPart .

4. Conclusione

In questo tutorial, abbiamo imparato come inviare e-mail con allegati singoli e multipli in Java.

Come sempre, il codice sorgente completo è disponibile su GitHub.