Use Javamail para enviar correos electrónicos, el paquete JAR requerido (descargue el archivo fuente de Javamail, la página de descarga oficial: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
mailapi.jar. Define la API de interfaz utilizada para enviar y recibir correos electrónicos;
smtp.jar. Contiene la clase utilizada para enviar correos electrónicos;
Pop3.Jar. Incluye la clase utilizada para recibir correos electrónicos;
El protocolo que generalmente usamos para enviar correos electrónicos es el protocolo SMTP, y el protocolo que usamos para aceptar correos electrónicos es el protocolo POP3. O bien, agregamos directamente Mail.jar al proyecto, que contiene todas las interfaces y clases para el envío de Java y recepción de correo.
Clases de uso común:
Enviar un correo electrónico
A continuación, primero enumeraré el pequeño ejemplo de prueba más simple de enviar correos electrónicos en Java:
import java.util.properties; import javax.mail.address; import javax.mail.message; import javax.mail.messagingException; import javax.mail.session; import javax.mail.transport; import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; /** * * QQ (mail.qq.com): servidor POP3 (puerto 995) SMTP Server (puerto 465 o 587). * */ public class Demo1 {/ ** * @param args * @throws MessioningException */ public static void main (string [] args) lanza MessagingException {String sendUsername = "[email protected]"; String sendpassword = "pwd"; Propiedades Propiedades = New Properties (); Properties.setProperty ("mail.smtp.auth", "true"); // El servidor necesita autenticar propiedades.setProperty ("mail.transport.protocol", "smtp"); // declarar el puerto utilizado para enviar la sesión de correo electrónico = sesión.getInstance (propiedades); session.setDebug (true); // Acepta imprimir la información de conversación con el servidor en la consola del mensaje de subproceso actual de mensaje = new Mimemessage (sesión); // Construye el mensaje enviado Message.settext ("Hola, soy campeón. transport.connect ("smtp.126.com", 25, sendUsername, sendpassword); // Conecte el transporte del servidor del remitente.sendMessage (mensaje, nueva dirección [] {new Internetaddress ("[email protected]")}); // Aceptar transporte por correo electrónico.close (); }}En general, usamos autenticador para encapsular el nombre de usuario y la contraseña, ¡lo cual es opaco! entonces:
import javax.mail.authenticator; import javax.mail.message; import javax.mail.messagingException; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail.transport; import javax.mail.internet.address; import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; import junit.framework.testcase; /*** Javamail Enviar correo electrónico* @Author Championship Wong* Message.addrecipient (Message.Recipient destinatario, dirección de dirección); Especifique los roles del destinatario y el destinatario cuando envíe un correo electrónico* Message.RecipientType.to destinatario* Message.RecipientType.cc CC, es decir, copie una a otra persona cuando envíe un correo electrónico, ¡sin responder! Sin embargo, el destinatario anterior puede ver a quién copió * Message.RecipientType.bcc envía en secreto, y también es enviar una copia a otra persona al enviar un correo electrónico. Sin embargo, a diferencia de lo anterior, el destinatario no puede ver a quién le dio secretamente a * */ public class Demo2 extiende TestCase {private static stating final sendUsername = "[email protected]"; // El nombre de usuario del servidor que debe conectarse para enviar un correo electrónico de cadena final static stendpassword = "pwd"; = "Smtp"; // Puerto utilizado para enviar una cadena final estática privada SendHostaddress = "Smtp.126.com"; // La dirección del servidor utilizada para enviar el correo de correo Void test () lanza DirectionException, MessagingException {Properties Properties = New Properties (); Properties.setProperty ("mail.smtp.auth", "true"); // El servidor debe autenticar las propiedades.setProperty ("mail.transport.protocol", sendprotocol); // declarar el puerto utilizado para enviar las propiedades de correo.setProperty ("mail.host", sendhostaddress); // la dirección del servidor para enviar la sesión de la sesión del servidor la sesión del servidor la sesión de correo de la sesión de correo. Session.getInStance (Properties, new Authenticator () {protegido PassionAuthentication getPasswortwortauthentication () {return New PasswordAuthentication (sendUsername, sendpassword);}}); session.setDebug (true); // Imprima información en tiempo real sobre el envío del correo en el mensaje de fondo = new Mimemessage (sesión); Message.setFrom (nuevo Internetaddress ("[email protected]")); message.setSubject("Demo2JavaCode sending email test, using Authenticator");// Set the topic message.setRecipients(Message.RecipientType.TO, InternetAddress .parse("[email protected],[email protected]"));// Send message.setRecipients(Message.RecipientType.CC, Internetaddress .Parse ("[email protected]")); // cc Mensaje .setContent ("<span style =" font-size: 20px; color: #ffccfff "mce_style =" Font-size: 20px; color: #ffccff "> Si lo considera, lo que resulta que la prueba fue exitosa. "texto/html; charset = gbk"); Transport.send (mensaje); // Enviar correo electrónico}} Enviamos un correo electrónico relativamente complejo, incluidos archivos adjuntos, imágenes y mensajes de texto:
import java.io.filenotfoundException; import java.io.fileOutputStream; import java.io.ioException; import java.io.outputstream; import java.util.properties; import javax.activation.datahandler; import javax.activation.dataSource; import javax.activation.fileDataSource; import javax.mail.authenticator; import javax.mail.messagingException; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail.transport; import javax.mail.message.recipientType; import javax.mail.internet.internetaddress; import javax.mail.internet.mimeBodyPart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; import javax.mail.internet.mimeutility; /** * * * @Author Administrator Mr xp.wang * Mimemultipart El contenedor general del correo electrónico es multipart, que define métodos para agregar y eliminar varias partes del correo electrónico. * Sin embargo, es una clase abstracta, y su subclase Mimemultipart debe usarse para el objeto Mimemessage* MimeBodyPart es una subclase de Bodypart se usa específicamente para Mimemessage. El objeto MimeBodyPart representa una * cada parte del objeto Mimemultipart * mimeutility.EncodeText (String cn) se utiliza para resolver el problema del código confuso chino en la información del encabezado en el correo electrónico * */ public class Demo3_test {public static void main (string [] args) Excepción {propiedades de propiedades = nuevas propiedades ();; Properties.setProperty ("mail.smtp.auth", "true"); // El servidor debe autenticar propiedades.setProperty ("mail.transport.protocol", "smtp"); // declarar el puerto utilizado para enviar las propiedades de correo.setProperty ("mail.host", "smtp.126.com");// Session.getInStance (Properties, new Authenticator () {String sendUsername = "[email protected]"; string sendpassword = "pwd"; contraseña protegida getPasswortwWalderAuthentication () {return New PasswordAuthentication (sendUsEnMeName, sendPassword);}); session.setDebug (verdadero); Mimemessage msg = new Mimemessage (Session); // Declarar un cuerpo de correo electrónico Msg.setFrom (nuevo Internetaddress ("/" "+mimeutility.encodetext (" Mr xp.wang ")+"/"<[email protected]>")); msg.setsubject ("Este es mi primer correo electrónico complicado"); // Establezca el correo electrónico Msg.setRecipients (mimemessage.recipienttype.to, internetaddress.parse (mimeutilidad.encodetext ("wang Xiangpan ")+" <[email protected]>, "+mimeutility.encodetext (" sanmao ")+" <[email protected]> ")); Mimemultipart msgmultipart = new mimemultipart ("mixed"); // indica la relación combinada del correo electrónico, la relación mixta msg.setContent (msgmultipart); // establecer el cuerpo de correo electrónico mimeBodyPart adjunt MimeBodyPart (); // El texto del correo electrónico, una mezcla (imagen + texto) // establece el archivo adjunto y el texto en este cuerpo de correo electrónico msgmultipart.addbodypart (attch1); msgmultipart.addbodypart (attch2); msgmultipart.addBodyPart (contenido); // Establezca el primer adjunto DataSource ds1 = new FiledataSource ("f: /accp5.0/file/ssh configuration.txt"); // Especifique la fuente de datos del archivo adjunto Datahandler dh1 = new Datahandler (DS1); // Información de archivo adjunto ATTCH1.setDatahandler (DH1);//Especifique el accesorio de fijación attch1.setFileName ("ssh.txt"); // Establezca el segundo adjunto DataSource ds2 = new FileDataSource ("Resource/48.jpg"); // Especifique la fuente de datos del archivo adjunto Datahandler dh2 = newAhandler (ds2); // Información adjunta adjunte2.setDataHandler (dh2); // especificar adjunta adjunta2.setfileName ("48.jpg"); // Establezca el texto del correo electrónico mimemultipart bodyMultipart = new Mimemultipart ("relacionado"); // dependency content.setContent (BodyMultipart); // Especifique el cuerpo mimeBodyPart htmlpart = new MimeBodyPart (); MimeBodyPart gifpart = new MimeBodyPart (); BodyMultipart.AddBodyPart (htmlpart); BodyMultipart.AddBodyPart (gifpart); DataSource gifds = new FileDataSource ("Resource/48.jpg"); // Establezca la imagen del texto Datahandler gifdh = new Datahandler (gifds); gifpart.setheader ("Content-Location", "http://mimg.126.net/logo/126logo.gif"); gifpart.setDatahandler (gifdh); // Establezca la imagen del texto htmlpart.setContent ("Solo estoy aquí para hacer una salsa de soja, esta es mi foto de imagen! <img src ="/"mce_src ="/"" http://mimg.126.net/logo/126logo.gif/",", ",", " "Text/html; charset = gbk"); // Establezca el texto msg.saveChanges (); // Guardar el correo electrónico // Guarde el correo electrónico como un archivo outstream ops = new FileOutputStream ("c: /users/administrator/desktop/test.eml"); msg.writeTo (OPS); ops.close (); Transport.send (MSG); }} Recibir correos electrónicos
Ejemplo: Rose recopila el último correo electrónico.
import java.util.Date;import java.util.Properties;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Store;public class FetchMail { public static void main (string [] args) {string protocol = "pop3"; boolean isssl = true; String host = "pop.163.com"; Int Port = 995; String UserName = "[email protected]"; String Password = "Rose"; Propiedades Props = New Properties (); propssput ("mail.pop3.ssl.enable", isssl); propssput ("mail.pop3.host", host); propssput ("mail.pop3.port", puerto); Sesión sesión = session.getDefaultInstance (Props); Tienda tienda = nulo; Carpeta carpeta = nulo; intente {store = session.getstore (protocol); store.connect (nombre de usuario, contraseña); carpeta = store.getfolder ("Bandeja de entrada"); carpeta.open (carpeta.read_only); int size = folder.getMessageCount (); Mensaje mensaje = carpeta.getMessage (tamaño); Cadena de = Message.getFrom () [0] .ToString (); String SUMT = Message.getSubject (); Fecha fecha = mensaje.getSentDate (); System.out.println ("De:" + desde); System.out.println ("Sujeto:" + sujeto); System.out.println ("fecha:" + fecha); } Catch (nosuchProviderRexception e) {E.PrintStackTrace (); } catch (MessionGingException e) {E.PrintStackTrace (); } finalmente {try {if (carpeta! = null) {carpeta.close (false); } if (store! = null) {store.close (); }} Catch (MessionGingException e) {E.PrintStackTrace (); }} System.out.println ("¡Recibido!"); }}