Afsendelse af e-mails med Java

1. Oversigt

I denne hurtige vejledning skal vi se på at sende en e-mail med og uden vedhæftede filer - ved hjælp af det centrale Java-mailbibliotek.

2. Projektopsætning og afhængighed

Til denne artikel bruger vi et simpelt Maven-baseret projekt med afhængighed af Java-mailbiblioteket:

 javax.mail mail 1.5.0-b01 

Den seneste version kan findes her.

3. Afsendelse af en almindelig tekst og en HTML-e-mail

Først skal vi konfigurere biblioteket med vores e-mail-udbyders legitimationsoplysninger. Derefter opretter vi en Session der vil blive brugt til at konstruere vores besked til afsendelse.

Konfigurationen sker via en Java Ejendomme objekt:

Egenskaber prop = nye egenskaber (); prop.put ("mail.smtp.auth", sandt); 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");

I egenskabskonfigurationen ovenfor konfigurerede vi e-mail-værten som Mailtrap og bruger også den port, der leveres af tjenesten.

Lad os gå videre ved at oprette en session med vores brugernavn og adgangskode:

Session session = Session.getInstance (prop, ny Authenticator () {@Override beskyttet PasswordAuthentication getPasswordAuthentication () {returner ny PasswordAuthentication (brugernavn, adgangskode);}});

Brugernavnet og adgangskoden gives af mailtjenesteudbyderen sammen med værts- og portparametrene.

Nu hvor vi har en mail Session objekt, lad os oprette en MimeBesked til afsendelse:

Beskedbesked = ny MimeMessage (session); message.setFrom (new InternetAddress ("[email protected]")); message.setRecipients (Message.RecipientType.TO, InternetAddress.parse ("[email protected]")); message.setSubject ("Mail Subject"); String msg = "Dette er min første e-mail ved hjælp af JavaMailer"; MimeBodyPart mimeBodyPart = ny MimeBodyPart (); mimeBodyPart.setContent (msg, "text / html"); Multipart multipart = ny MimeMultipart (); multipart.addBodyPart (mimeBodyPart); message.setContent (multipart); Transport.send (besked);

I uddraget ovenfor oprettede vi først en besked eksempel med de nødvendige egenskaber - til, fra og emne. Efterfulgt af en mimeBodyPartder har en kodning af tekst / html, da vores besked er stylet i HTML.

Den næste ting vi gjorde er at oprette en forekomst af MimeMultipart objekt, som vi kan bruge til at pakke mimeBodyPart vi skabte.

Endelig indstiller vi flerdelt objekt som indholdet af vores besked og brug sende()af Transportere modsætter sig at sende mailen.

Så vi kan sige, at mimeBodyParter indeholdt i flerdelt der er indeholdt i besked. Derfor er en flerdelt kan indeholde mere end en mimeBodyPart.

Dette bliver fokus i det næste afsnit.

4. Afsendelse af e-mail med en vedhæftet fil

For at sende en vedhæftet fil behøver vi kun at oprette en anden MimeBodyPartog vedhæft filen (e) til den:

MimeBodyPart attachmentBodyPart = ny MimeBodyPart (); attachmentBodyPart.attachFile (ny fil ("sti / til / fil"));

Vi kan derefter tilføje den nye kropsdel ​​til MimeMultipartobjekt, vi oprettede tidligere:

multipart.addBodyPart (vedhæftet filBodyPart);

Det er alt, hvad vi skal gøre.

Endnu en gang indstiller vi flerdelt eksempel som indholdet af besked objekt, og til sidst bruger vi sende() at sende mailen.

5. Konklusion

Afslutningsvis har vi set, hvordan man bruger det oprindelige Java-mailbibliotek til at sende e-mails, selv med vedhæftet fil.

Som altid er den komplette kildekode tilgængelig på Github.