Invio di e-mail con Java

1. Panoramica

In questo breve tutorial, esamineremo l'invio di un'e-mail con e senza allegati, utilizzando la libreria di posta Java principale.

2. Configurazione del progetto e dipendenza

Per questo articolo, utilizzeremo un semplice progetto basato su Maven con una dipendenza dalla libreria di posta Java:

 javax.mail mail 1.5.0-b01 

L'ultima versione può essere trovata qui.

3. Invio di un testo normale e un'e-mail HTML

Innanzitutto, dobbiamo configurare la libreria con le credenziali del nostro provider di servizi di posta elettronica. Quindi, creeremo una sessione che verrà utilizzata per costruire il nostro messaggio per l'invio.

La configurazione avviene tramite un oggetto Proprietà Java :

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

Nella configurazione delle proprietà sopra, abbiamo configurato l'host di posta elettronica come Mailtrap e utilizziamo anche la porta fornita dal servizio.

Ora andiamo oltre creando una sessione con il nostro nome utente e password:

Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

Il nome utente e la password vengono forniti dal provider del servizio di posta insieme ai parametri host e porta.

Ora che abbiamo un oggetto Sessione di posta , creiamo un messaggio Mime per l'invio:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

Nello snippet precedente, abbiamo prima creato un'istanza del messaggio con le proprietà necessarie: a, da e oggetto. Seguito da un mimeBodyPart che ha una codifica di text / html, poiché il nostro messaggio è in stile HTML.

La prossima cosa che abbiamo fatto è creare un'istanza dell'oggetto MimeMultipart che possiamo usare per avvolgere il mimeBodyPart che abbiamo creato.

Infine, abbiamo impostato il multipart oggetto come il contenuto del nostro messaggio e utilizzare il send () di trasporto oggetto di fare la posta di invio.

Quindi, possiamo dire che mimeBodyPart è contenuto nella multiparte contenuta nel messaggio. Quindi, una multiparte può contenere più di un mimeBodyPart .

Questo sarà il fulcro della prossima sezione.

4. Invio di e-mail con allegato

Successivamente, per inviare un allegato, dobbiamo solo creare un altro MimeBodyPart e allegare i file ad esso:

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Possiamo quindi aggiungere la nuova parte del corpo all'oggetto MimeMultipart che abbiamo creato in precedenza:

multipart.addBodyPart(attachmentBodyPart);

È tutto ciò che dobbiamo fare.

Ancora una volta, impostiamo l' istanza multipart come contenuto dell'oggetto messaggio e infine useremo send () per inviare la posta .

5. conclusione

In conclusione, abbiamo visto come utilizzare la libreria di posta nativa di Java per inviare email anche con allegati.

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