Javamail

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2015. február 21-én áttekintett verziótól ; az ellenőrzések 6 szerkesztést igényelnek .
javamail
Típusú függvénykönyvtár
Szerző Sun Microsystems
Fejlesztő Eclipse Alapítvány
Beírva Jáva
Első kiadás 1996 [1]
Hardver platform platformközi
legújabb verzió
Engedély GNU GPL 2 és a közös fejlesztési és terjesztési licenc 1.1-es verziója [d]
Weboldal eclipse-ee4j.github.io/… ​(  angol)

A JavaMail  egy Java API e - mailek fogadására és küldésére SMTP , POP3 és IMAP protokollok használatával . A JavaMail a Java EE platform része , de kiegészítő csomagként is elérhető Java SE alkalmazásokhoz .

A JavaMailnek létezik egy nyílt forráskódú alternatív megvalósítása is , a  GNU JavaMail, amely csak az 1.3-as verziójú JavaMail specifikációt valósítja meg; ez az egyetlen ingyenes megvalósítás, amely támogatja az NNTP protokollt , amely lehetővé teszi cikkek olvasását és hírcsoportokba való közzétételét .

A JavaMail nem tartalmaz levelezőszervert, de az ingyenes Apache James és Java Email Server (POP3 és SMTP) használható az ilyen feladatokhoz, vagy a SubEthaSMTP könyvtár SMTP szerver létrehozásához [3] .

Licenc

A forráskód és a lefordított könyvtárak CDDL-1.1 licenc alatt, részben pedig GPLv2 alatt érhetők el hivatkozáskivétellel , a példaforrások pedig a BSD licenc alatt [4] .

Használati példák

Üzenetek lekérése IMAP-on keresztül

import javax.mail.* ; import java.util.Properties ; public class TestImap { public static void main ( String [] args ) throws Exception { final String user = "[email protected]" ; // felhasználónév végleges String pass = "a jelszavad" ; // végleges jelszó String host = "imap.mail.ru" ; // levelezőszerver címe // Tulajdonságok létrehozása Properties props = new Properties (); //hibakeresési mód kellékeinek engedélyezése . put ( "mail.debug" , "true" ); //Protokoll megadása - IMAP SSL kellékekkel . put ( "mail.store.protocol" , "imaps" ); Session session = session . getInstance ( kellékek ); Store store = session . getstore (); //csatlakozás a levelezőszerver tárolójához . connect ( host , user , pass ); //mappa beszerzése a bejövő üzenetekkel Mappa bejövő üzenetek = store . getFolder ( "INBOX" ); //csak olvasható beérkező levelek megnyitása . nyitott ( Folder.READ_ONLY ) ; _ //a legfrissebb üzenet lekérése (a legrégebbi az 1-es lesz) Üzenet m = postafiók . getMessage ( inbox.getMessageCount ( ) ); Többrészes mp = ( Többrészes ) m . getContent (); Testrész bp = mp . getBodyPart ( 0 ); //Tartalom megjelenítése a képernyőn Rendszer . ki . println ( bp.getContent ( ) ); } }

Példa szöveges üzenet küldésére

import java.util.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; // Egyszerű üzenet küldése "text/plain" tartalomtípussal public class TestEmail { public static void main ( String [ ] args ) { // Helyettesítse itt az üzenet címzettjének címét String to = "sendToMailAddress" ; String from = "sendFromMailAddress" ; // Cserélje ki a küldéshez használt SMTP-kiszolgálót String host = "smtp.yourisp.net" ; // Itt megadjuk az SMTP szerver portját. int port = 123 ; // Tulajdonságok létrehozása, munkamenet lekérése Properties props = new Properties (); // A Transport.send() // statikus metódus használatakor meg kell adni, hogy az üzenet melyik gazdagépen keresztül kerüljön küldésre props . put ( "mail.smtp.host" , host ); // Ha a levelezőszerver SSL kellékeket használ . put ( "mail.smtp.ssl.enable" , "true" ); // Adja meg az SMTP szerver portját. kellékek . put ( "mail.smtp.port" , port ); // A legtöbb SMTP-kiszolgáló hitelesítést használ. kellékek . put ( "mail.smtp.auth" , "igaz" ); // Hibakeresési mód kellékeinek engedélyezése . put ( "mail.debug" , "true" ); // Engedélyezze. Session session = session . getDefaultInstance ( props , new javax . mail . Authenticator () { // Adja meg a bejelentkezési jelszót abból az e-mailből, ahonnan az üzenetet küldjük. @Override protected PasswordAuthentication getPasswordAuthentication () { return new PasswordAuthentication ( "login" , "password" ) ; } }); try { // Üzenetobjektum létrehozása Message msg = new MimeMessage ( session ); // Üzenetattribútumok beállítása msg . setFrom ( new InternetAddress ( from )); InternetAddress [] address = { new InternetAddress ( to )}; msg . setRecipients ( Üzenet . RecipientType . TO , cím ); msg . setSubject ( "E-mail tesztelése Java-n keresztül" ); msg . setSentDate ( új dátum ()); // Üzenettörzs üzenet beállítása . setText ( "Ez egy egyszerű szöveges e-mail " + "küldésének tesztje Java-n keresztül.\n" + "Itt a 2. sor." ); // Üzenet küldése Transport . küld ( üzenet ); } catch ( MessagingException mex ) { // Információk nyomtatása a kivételről, ha előfordul mex . printStackTrace (); } } }

Példa többrészes üzenet küldésére fájlmellékletekkel

import java.util.* ; import java.io.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; public class SendMailUsage { public static void main ( String [ ] args ) { // Helyettesítse itt az üzenet címzettjének címét String to = "sendToMailAddress" ; String from = "sendFromMailAddress" ; // Helyettesítse a küldéshez használt SMTP-kiszolgálót String host = "smtpserver.yourisp.net" ; // Tulajdonságok létrehozása, munkamenet lekérése Properties props = new Properties (); // A Transport.send() // statikus metódus használatakor meg kell adni, hogy az üzenet melyik gazdagépen keresztül kerüljön küldésre props . put ( "mail.smtp.host" , host ); // Hibakeresési mód kellékeinek engedélyezése . put ( "mail.debug" , "true" ); //Engedélyezési kellékek engedélyezése . put ( "mail.smtp.auth" , "igaz" ); // A munkamenet lekérése Session session = Session . getInstance ( kellékek ); try { // A transport objektum lekérése az e-mail elküldéséhez Transport bus = session . getTransport ( "smtp" ); // A kapcsolat egyszeri beállítása // A Transport.send() metódus minden küldés után megszakad //bus.connect(); // Általában az SMTP szerverhez meg kell adni a felhasználónév és jelszó buszt . connect ( "smtpserver.yourisp.net" , "username" , "password" ); // Üzenetobjektum létrehozása Message msg = new MimeMessage ( session ); // Üzenetattribútumok beállítása msg . setFrom ( new InternetAddress ( from )); InternetAddress [] address = { new InternetAddress ( to )}; msg . setRecipients ( Üzenet . RecipientType . TO , cím ); // Szóközökkel elválasztott címlista elemzése. Szigorú üzenet szintaxis . setRecipients ( Message . RecipientType . CC , InternetAddress . parse ( to , true )); // Szóközökkel elválasztott címlista elemzése. Lágyabb szintaxis. msg . setRecipients ( Message . RecipientType . BCC , InternetAddress . parse ( to , false )); msg . setSubject ( "E-mail küldés tesztelése Java-val" ); msg . setSentDate ( új dátum ()); // Üzenet tartalmának beállítása és setTextContent ( msg ) küldése; msg . Változások mentése (); busz . sendMessage ( üzenet , cím ); setMultipartContent ( msg ); msg . Változások mentése (); busz . sendMessage ( üzenet , cím ); setFileAsAttachment ( msg , "C:/WINDOWS/CLOUD.GIF" ); msg . Változások mentése (); busz . sendMessage ( üzenet , cím ); setHTMLContent ( msg ); msg . Változások mentése (); busz . sendMessage ( üzenet , cím ); busz . bezár (); } catch ( MessagingException mex ) { // Információk nyomtatása a mex esetleges kivételeiről . printStackTrace (); // A beágyazott kivétel lekérése while ( mex . getNextException () != null ) { // A következő kivétel lekérése a Kivételláncban ex = mex . getNextException (); pl . printStackTrace (); if ( ! ( ex instance of MessagingException )) break ; else mex = ( MessagingException ) ex ; } } } // Egyrészes üzenet szöveges/sima tartalomtípussal. public static void setTextContent ( Message msg ) throws MessagingException { // Tartalomtípus beállítása String mytxt = "Ez egy egyszerű szöveges e-mail " + "küldésének tesztje Java-n keresztül.\n" + "Itt a 2. sor." ; msg . setText ( mytxt ); // Alternate way msg . setContent ( mytxt , "text/plain" ); } // Többrészes/vegyes tartalomtípusú üzenet. Mindkét rész szöveges/sima tartalom típusú. public static void setMultipartContent ( Message msg ) throws MessagingException { // A MimeBodyPart első részének létrehozása és kitöltése p1 = new MimeBodyPart (); p1 . setText ( "Ez egy többrészes teszt e-mail egyik része." ); // A MimeBodyPart második részének létrehozása és kitöltése p2 = new MimeBodyPart (); // Így állíthat be karakterkészletet a p2 szöveges tartalomhoz . setText ( "Ez a második rész" , "us-ascii" ); // Hozzon létre egy példányt a Multipart osztályból. Üzenetrészek hozzáadása hozzá. Többrészes mp = új MimeMultipart (); mp . addBodyPart ( p1 ); mp . addBodyPart ( p2 ); // A Multipart osztály objektumának beállítása az üzenet tartalmaként . setContent ( mp ); } // Fájl csatolása mellékletként. A JAF FileDataSource használja. public static void setFileAsAttachment ( Message msg , String filename ) throws MessagingException { // A MimeBodyPart első részének létrehozása és kitöltése p1 = new MimeBodyPart (); p1 . setText ( "Ez egy többrészes teszt e-mail egyik része." + "A második rész egy fájl mellékletként" ); // A második MimeBodyPart létrehozása p2 = new MimeBodyPart (); // Fájl hozzáadása a második részhez FileDataSource fds = new FileDataSource ( fájlnév ); p2 . setDataHandler ( új DataHandler ( fds )); p2 . setFileName ( fds.getName ( ) ); // Hozzon létre egy példányt a Multipart osztályból. Üzenetrészek hozzáadása hozzá. Többrészes mp = új MimeMultipart (); mp . addBodyPart ( p1 ); mp . addBodyPart ( p2 ); // A Multipart osztály egy példányának beállítása az msg dokumentum tartalmaként . setContent ( mp ); } // Hozzáadás a html tartalom első részéhez. // Bármilyen más típusú adat küldése is hasonló módon történik. public static void setHTMLContent ( Message msg ) throws MessagingException { String html = "<html><head><title>" + msg . getSubject () + "</title></head><body><h1>" + msg . getSubject () + "</h1><p>Ez egy HTML e-mail küldésének tesztje" + " Java-n keresztül.</body></html>" ; // A HTMLDataSource az msg belső osztálya . setDataHandler ( new DataHandler ( új HTMLDataSource ( html )))); } /* * A belső osztály úgy működik, mint a JAF adatforrás, és HTML-kódot ad hozzá az üzenet tartalmához */ static class A HTMLDataSource implementálja a DataSource { private String html ; public HTMLDataSource ( String htmlString ) { html = htmlString ; } // html karakterlánc visszaadása az InputStreamben. // Minden alkalommal új adatfolyamot ad vissza, amikor a public InputStream getInputStream () eldobja az IOExceptiont { if ( html == null ) throw new IOException ( "Null HTML" ); return new ByteArrayInputStream ( html.getBytes ( ) ); } public OutputStream getOutputStream () throws IOException { throw new IOException ( "Ez az adatkezelő nem tud HTML-t írni" ); } public String getContentType () { return "text/html" ; } public String getName () { return "JAF szöveg/html adatforrás csak e-mail küldésére" ; } } }

Jegyzetek

  1. JavaMail™ API – Technikai áttekintés – 4. o.
  2. Kiadás 2.1.0 – 2022.
  3. JavaMail API: levelezőszerverek . Letöltve: 2015. február 21. Az eredetiből archiválva : 2015. február 21..
  4. JavaMail licenc . Hozzáférés dátuma: 2015. február 20. Az eredetiből archiválva : 2014. november 12.

Linkek