Descargar y cargar archivos adjuntos, enviar mensajes de texto y enviar correos electrónicos son funciones de muy comúnmente utilizadas en el programa. Grabé la carga y descarga de archivos y envié mensajes de texto. Como estaba ocupado recientemente, no tuve tiempo de hacer la función de envío de correo electrónico. Ahora finalmente he enviado correos electrónicos con éxito al correo electrónico QQ con 163 buzón. Los siguientes son los códigos relevantes. Para más detalles, consulte los comentarios en el código:
prueba de paquete; import java.util.arrayList; import java.util.date; import java.util.list; import java.util.properties; import java.util.regex.matcher; import java.util.regex.pattern; import javax.mail.address; import javax.mail.authenticator; import javax.mail.bodypart; import javax.mail.message; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail.transport; import javax.mail.internet.internetaddress; import javax.mail.internet.mimeBodyPart; import javax.mail.internet.mimemessage; import javax.mail.internet.mimemultipart; import com.sun.mail.util.mailsslsocketfactory; /// */ * // * @author tuzongxun123 // * @Description Mail Enviar clase de prueba // */public class SendmailTest {public static void main (string [] args) lanza excepción {// Propiedades de información de configuración Pro = nuevas propiedades (); pro.put ("mail.smtp.host", "smtp.163.com"); pro.put ("mail.smtp.auth", "verdadero"); // Cifrado SSL MailsSlSocketFactory SF = NULL; sf = new MailsSlSocketFactory (); // establecer confianza en todos los hosts sf.setTrustallHosts (true); pro.put ("mail.smtp.ssl.enable", "verdadero"); pro.put ("mail.smtp.ssl.socketfactory", sf); // Construye una sesión para enviar correos electrónicos basados en las propiedades de la sesión del correo electrónico. Cabe señalar aquí que el nombre de usuario no puede ser sufijo, de lo contrario no será el nombre de usuario. // también debe tenerse en cuenta que la contraseña aquí no es la contraseña de inicio de sesión del buzón normalmente, sino otro código de autorización especial generado por el cliente MailAuthenticator Autorizer = new MailAuthenticator ("TUzongxun123", "Código de autorización del cliente"); Sesión sesión = session.getInstance (pro, autorizador); // Construye información de correo electrónico basada en el mensaje de la sesión = new Mimemessage (sesión); // crear dirección de dirección del remitente de correo electrónico desde = nuevo Internetaddress ("[email protected]"); // Establezca el remitente del correo electrónico Message.setFrom (desde); // Verifique la lista de direcciones de correo electrónico del destinatario <String> toaddressList = new ArrayList <> (); toaddressList.add ("[email protected]"); StringBuffer Buffer = new StringBuffer (); if (! toaddressList.isEmpty ()) {String regex = "^([a-z0-9a-z]+[-| //.]?] Patrón p = patrón.compile (regex); for (int i = 0; i <toaddressList.size (); i ++) {matcher match = p.matcher (toaddressList.get (i)); if (match.matches ()) {buffer.append (toaddressList.get (i)); if (i <toaddressList.size () - 1) {buffer.append (","); }}}}} Cadena toaddress = buffer.ToString (); if (! toaddress.isEmpty ()) {// Cree la dirección del destinatario de la dirección del mensaje [] a = Internetaddress.Parse (Toaddress); // Establecer la dirección del destinatario del correo electrónico Message.setRecipients (Message.recipientType.to, a); // Envíe un correo electrónico al tema // Message.setsubject ("Prueba de correo Java"); Message.setsubject ("por qué está mal"); // Envíe un contenedor de correo electrónico mimemultipart mimemultipart = new mimemultipart (); // establecer HTML Bodypart Bodypart = new MimeBodyPart (); // Correo contenido // cadena htmlText = "Java Email Test 111"; Cadena htmlText = "¿Por qué está mal?"; BodyPart.SetContent (htmlText, "text/html; charset = utf-8"); mimemultipart.addBodyPart (Bodypart); // Agregar lista de archivos adjuntos <String> fileaddressList = new ArrayList <String> (); FileAddressList .Add ("c: // usuarios // tuzongxun123 // escritorio // nuevo Microsoft Office Word document.docx"); if (fileaddressList! = null) {Bodypart AttachPart = null; for (int i = 0; i <fileaddressList.size (); i ++) {if (! FileAddressList.get (i) .IsEmpty ()) {adjectPart = new MimeBodyPart (); // Fuente de datos de datos adjuntos Fuente de DataSource = new FileDataSource (FileAddressList.get (i)); // Agregue la fuente de datos de archivos adjuntos al cuerpo de correo adjuntePart.SetDatahandler (nuevo Datahandler (fuente)); // Establezca el nombre de archivo adjunto en el nombre del archivo original adjuntePart.SetFileName (mimeUtility.EncodeText (fuente .getName ())); mimemultipart.addbodypart (attchpart); }}} Message.SetContent (MimemUlTIPart); Message.setsentDate (nueva fecha ()); // Guardar mensajes de correo electrónico.savechanges (); // Enviar correo electrónico transport.send (mensaje); }}} class MailAuthenticator extiende Authenticator { / *** UserName* / private String UserName; / *** contraseña*/ contraseña de cadena privada; /*** Crear una nueva instancia MailAuthenticator. * * @param username * @param contraseña */ public mailAuthenticator (String UserName, String Password) {this.Username = username; this.password = contraseña; } public String getPassword () {return Password; } @Override PassionAuthentation GetPasswordAuthentication () {return New PasswordAuthentication (nombre de usuario, contraseña); } public String getUsername () {return UserName; } public void setPassword (String Password) {this.password = contraseña; } public void setUsername (String UserName) {this.Username = username; }}Nota: Un colega mío usó mi código para reemplazarlo con su cuenta y código de autorización del cliente. Informó un error tan pronto como lo corrió. Luego restableció el código de autorización del cliente de la dirección de correo electrónico, y el error desapareció.
Lo anterior se trata de este artículo, espero que sea útil para todos aprender la programación de Java.