Javamail

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. februar 2015; checks kræver 6 redigeringer .
javamail
Type funktionsbibliotek
Forfatter Sun Microsystems
Udvikler Eclipse Foundation
Skrevet i Java
Første udgave 1996 [1]
Hardware platform på tværs af platforme
nyeste version
Licens GNU GPL 2 og fælles udviklings- og distributionslicens version 1.1 [d]
Internet side eclipse-ee4j.github.io/… (  engelsk)

JavaMail  er en Java API til modtagelse og afsendelse af e- mail ved hjælp af SMTP- , POP3- og IMAP-protokollerne . JavaMail er en del af Java EE-platformen , men er også tilgængelig som en tilføjelsespakke til brug i Java SE -applikationer .

Der er også en open source alternativ implementering af JavaMail  , GNU JavaMail, som kun implementerer version 1.3 JavaMail-specifikationen; det er den eneste gratis implementering, der understøtter NNTP-protokollen , som giver dig mulighed for at læse og sende artikler til nyhedsgrupper .

JavaMail inkluderer ikke en mailserver, men gratis Apache James og Java Email Server (POP3 og SMTP) kan bruges til sådanne opgaver, eller SubEthaSMTP- biblioteket til at oprette en SMTP-server [3] .

Licens

Kildekoden og de kompilerede biblioteker er tilgængelige under CDDL-1.1- licensen og delvist under GPLv2 med en linkundtagelse , og eksempelkilderne er tilgængelige under BSD-licensen [4] .

Eksempler på brug

Henter beskeder via IMAP

import javax.mail.* ; import java.util.Properties ; offentlig klasse TestImap { public static void main ( String [] args ) throws Exception { final String user = "[email protected]" ; // brugernavn final String pass = "din adgangskode" ; // password final String host = "imap.mail.ru" ; // mail server adresse // Opret egenskaber Properties props = new Properties (); //aktiver debug mode rekvisitter . put ( "mail.debug" , "sand" ); //Specificer protokol - IMAP med SSL- rekvisitter . put ( "mail.store.protocol" , "imaps" ); Session session = session . getInstance ( rekvisitter ); Butik butik = session . getstore (); //opret forbindelse til mailserverens lager . forbinde ( vært , bruger , pass ); //hent en mappe med indgående beskeder Mappeindbakke = butik . getFolder ( "INBOX" ); //åbn den skrivebeskyttet indbakke . åben ( Folder.READ_ONLY ) ; _ //få den seneste besked (den ældste bliver nummer 1) Besked m = indbakke . getMessage ( inbox.getMessageCount ( ) ); Multipart mp = ( Multipart ) m . getContent (); BodyPart bp = mp . getBodyPart ( 0 ); //Vis indhold på skærmen System . ud . println ( bp.getContent ( ) ); } }

Eksempel på afsendelse af en tekstbesked

importer java.util.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; // Afsendelse af en simpel besked med indholdstypen "text/plain" public class TestEmail { public static void main ( String [] args ) { // Erstat adressen på modtageren af ​​beskeden her String to = "sendToMailAddress" ; String from = "sendFromMailAddress" ; // Erstat den SMTP-server, der bruges til at sende her . String host = "smtp.yourisp.net" ; // Her angiver vi SMTP-serverens port. int port = 123 ; // Opret egenskaber, få session Properties props = new Properties (); // Når du bruger den statiske metode Transport.send() // skal du angive, gennem hvilken vært meddelelsen vil blive sendt rekvisitter . put ( "mail.smtp.host" , vært ); // Hvis mailserveren bruger SSL- rekvisitter . put ( "mail.smtp.ssl.enable" , "true" ); // Angiv porten på SMTP-serveren. rekvisitter . put ( "mail.smtp.port" , port ); // De fleste SMTP-servere bruger godkendelse. rekvisitter . put ( "mail.smtp.auth" , "sand" ); // Aktiver debug mode rekvisitter . put ( "mail.debug" , "sand" ); // Godkend. Session session = session . getDefaultInstance ( props , new javax . mail . Authenticator () { // Angiv login-adgangskoden fra den mail, som vi vil sende beskeden fra. @Override protected PasswordAuthentication getPasswordAuthentication () { return new PasswordAuthentication ( "login" , "password" ) ; } }); try { // Create a message object Message msg = new MimeMessage ( session ); // Indstil meddelelsesattributter msg . setFrom ( ny internetadresse ( fra )); Internetadresse [] adresse = { ny internetadresse ( til )}; besked . setRecipients ( Besked . RecipientType . TO , adresse ); besked . setSubject ( "Test e-mail via Java" ); besked . setSentDate ( ny dato ()); // Indstil meddelelsestekst msg . setText ( "Dette er en test af at sende en " + "e-mail med almindelig tekst via Java.\n" + "Her er linje 2." ); // Send besked Transport . send ( besked ); } catch ( MessagingException mex ) { // Udskriv oplysninger om undtagelsen , hvis den forekommer mex . printStackTrace (); } } }

Et eksempel på afsendelse af en flerdelt besked med vedhæftede filer

importer java.util.* ; importer java.io.* ; import javax.mail.* ; import javax.mail.internet.* ; import javax.activation.* ; offentlig klasse SendMailUsage { public static void main ( String [] args ) { // Erstat adressen på modtageren af ​​beskeden her String to = "sendToMailAddress" ; String from = "sendFromMailAddress" ; // Erstat den SMTP-server, der bruges til at sende her . String host = "smtpserver.yourisp.net" ; // Opret egenskaber, få session Properties props = new Properties (); // Når du bruger den statiske metode Transport.send() // skal du angive, gennem hvilken vært meddelelsen vil blive sendt rekvisitter . put ( "mail.smtp.host" , vært ); // Aktiver debug mode rekvisitter . put ( "mail.debug" , "sand" ); //Aktiver autorisationsrekvisitter . put ( "mail.smtp.auth" , "sand" ); // Hent sessionen Session session = Session . getInstance ( rekvisitter ); prøv { // Få transportobjektet til at sende e-mailen Transport bus = session . getTransport ( "smtp" ); // Opsæt forbindelsen én gang // Transport.send()-metoden afbrydes efter hver afsendelse //bus.connect(); // Normalt for SMTP-serveren skal du angive brugernavn og adgangskodebussen . connect ( "smtpserver.yourisp.net" , "brugernavn" , "adgangskode" ); // Opret et meddelelsesobjekt Message msg = new MimeMessage ( session ); // Indstil meddelelsesattributter msg . setFrom ( ny internetadresse ( fra )); Internetadresse [] adresse = { ny internetadresse ( til )}; besked . setRecipients ( Besked . RecipientType . TO , adresse ); // Parse en liste over adresser adskilt af mellemrum. Streng msg- syntaks . setRecipients ( Message . RecipientType . CC , InternetAddress . parse ( to , true )); // Parse en liste over adresser adskilt af mellemrum. Blødere syntaks. besked . setRecipients ( Message . RecipientType . BCC , InternetAddress . parse ( to , false )); besked . setSubject ( "Test afsendelse af e-mail med Java" ); besked . setSentDate ( ny dato ()); // Indstil beskedindhold og send setTextContent ( msg ); besked . gem Ændringer (); bus . sendMessage ( besked , adresse ); setMultipartContent ( msg ); besked . gem Ændringer (); bus . sendMessage ( besked , adresse ); setFileAsAttachment ( msg , "C:/WINDOWS/CLOUD.GIF" ); besked . gem Ændringer (); bus . sendMessage ( besked , adresse ); setHTMLContent ( msg ); besked . gem Ændringer (); bus . sendMessage ( besked , adresse ); bus . lukke (); } catch ( MessagingException mex ) { // Udskriv oplysninger om eventuelle undtagelser, der er kastet mex . printStackTrace (); // Hent den indlejrede undtagelse while ( mex . getNextException ( ) != null ) { // Hent den næste undtagelse i undtagelseskæden ex = mex . getNextException (); eks . printStackTrace (); if ( ! ( eksempelvis MessagingException ) ) break ; else mex = ( MessagingException ) ex ; } } } // En besked i én del med indholdstype tekst/almindelig. public static void setTextContent ( Message msg ) throws MessagingException { // Set content type String mytxt = "Dette er en test af at sende en " + "e-mail med almindelig tekst gennem Java.\n" + "Her er linje 2." ; besked . setText ( mytxt ); // Alternativ måde meddelelse . setContent ( mytxt , "text/plain" ); } // Besked med indholdstype multipart/mixed. Begge dele er af tekst/almindeligt indholdstype. public static void setMultipartContent ( Message msg ) throws MessagingException { // Opret og udfyld den første del af MimeBodyPart p1 = new MimeBodyPart (); p1 . setText ( "Dette er del et af en test multipart e-mail." ); // Opret og udfyld den anden del af MimeBodyPart p2 = new MimeBodyPart (); // Sådan indstilles et tegnsæt på tekstindhold p2 . setText ( "Dette er den anden del" , "us-ascii" ); // Opret en instans af Multipart-klassen. Tilføjelse af meddelelsesdele til det. Multipart mp = ny MimeMultipart (); mp . addBodyPart ( p1 ); mp . addBodyPart ( p2 ); // Indstil objektet for Multipart-klassen som indholdet af meddelelsen . setContent ( mp ); } // Vedhæftning af en fil som en vedhæftet fil. Brugt af JAF FileDataSource. public static void setFileAsAttachment ( Message msg , String filename ) throws MessagingException { // Opret og udfyld den første del af MimeBodyPart p1 = new MimeBodyPart (); p1 . setText ( "Dette er del et af en test multipart e-mail." + "Den anden del er fil som en vedhæftet fil" ); // Opret den anden MimeBodyPart p2 = ny MimeBodyPart (); // Tilføjelse af en fil til den anden del FileDataSource fds = new FileDataSource ( filnavn ); p2 . setDataHandler ( ny DataHandler ( fds )); p2 . setFileName ( fds.getName ( ) ); // Opret en instans af Multipart-klassen. Tilføjelse af meddelelsesdele til det. Multipart mp = ny MimeMultipart (); mp . addBodyPart ( p1 ); mp . addBodyPart ( p2 ); // Indstil en instans af Multipart-klassen som indholdet af msg -dokumentet . setContent ( mp ); } // Tilføjelse til den første del af html-indholdet. // Afsendelse af data af enhver anden type foregår på samme måde. public static void setHTMLContent ( Message msg ) throws MessagingException { String html = "<html><head><title>" + msg . getSubject () + "</title></head><body><h1>" + msg . getSubject () + "</h1><p>Dette er en test af at sende en HTML-e-mail" + " gennem Java.</body></html>" ; // HTMLDataSource er en indre klasse af msg . setDataHandler ( ny DataHandler ( ny HTMLDataSource ( html )))); } /* * Indre klasse fungerer som JAF datakilde og tilføjer HTML til meddelelsens indhold */ statisk klasse HTMLDataSource implementerer DataSource { private String html ; public HTMLDataSource ( String htmlString ) { html = htmlString ; } // Returner html-streng i InputStream. // Returnerer en ny strøm hver gang public InputStream getInputStream () kaster IOException { if ( html == null ) throw new IOException ( "Null HTML" ); returnere ny ByteArrayInputStream ( html.getBytes ( ) ); } public OutputStream getOutputStream () kaster IOException { throw new IOException ( "Denne DataHandler kan ikke skrive HTML" ); } public String getContentType () { return "text/html" ; } public String getName () { return "JAF text/html dataSource for kun at sende e-mail" ; } } }

Noter

  1. JavaMail™ API - En teknisk oversigt - S. 4.
  2. Udgivelse 2.1.0 - 2022.
  3. JavaMail API: mailservere . Hentet 21. februar 2015. Arkiveret fra originalen 21. februar 2015.
  4. JavaMail-licens . Dato for adgang: 20. februar 2015. Arkiveret fra originalen 12. november 2014.

Links