Este ejemplo comparte el código específico de Java usando Socket para implementar el protocolo SMTP para enviar correos electrónicos para su referencia. El contenido específico es el siguiente
correo de paquete; import java.io.bufferedReader; import java.io.ioException; import java.io.inputstream; import java.io.inputstreamreader; import java.io.outputstream; import java.io.printwriter; import java.io.io.rupter; import java.net.setket; import java.utilil.arraylist; java.util.list; import java.util.list; import org.apache.commons.codec.binary.base64; Public Class Mail {public static void main (string [] args) lanza ioexception {mail mail = new mail (); mail.setsmtpserver ("smtp.qq.com"); mail.setfrommail ("1344364 ****@qq.com"); mail.addtomail ("105648 ****@qq.com"); mail.addtomail ("long *******@sina.com"); mail.setUsername ("134364 ****"); mail.setPassword ("************"); mail.setsubject ("Test Mail"); mail.setContent ("<h1> hola </h1> <br/> <img src =/" https://www.baidu.com/img/baidu_jgylogo3.gif?v=39549282.gif/ "/>"); mail.setShowlog (verdadero); mail.send (); System.out.println ("End de programa"); } / ** Asunto de correo electrónico ** / String private String Asunto; / ** Enviar desde esta dirección **/ cadena privada deMail; / ** Nombre de usuario **/ Nombre de usuario de cadena privada; / ** Contraseña de inicio de sesión **/ contraseña de cadena privada; / ** Dirección del servidor SMTP **/ String private SmtpServer; / ** Puerto de servidor SMTP (predeterminado: 25) **/ private int smtpport = 25; / ** Todas las direcciones enviadas a Tomail **/ Lista privada <String> Tomail; / ** Contenido de correo **/ Contenido de cadena privada; / ** Si debe mostrar el registro **/ showlog booleano privado; public void addTomail (String Mail) {if (Tomail == NULL) TOMAIL = new ArrayList <String> (); tomail.add (correo); } public void send () {if (smtpserver == null) {throw new runtimeException ("smtPserver no se puede vaciar"); } if (username == null) {throle new runtimeException ("el nombre de usuario no puede estar vacío"); } if (contraseña == null) {Throw New RuntimeException ("La contraseña no puede estar vacía"); } if (frommail == null) {throle new RuntimeException ("frommail no puede estar vacío"); } if (tomail == null || tomail.isEmpty ()) {Throw New RuntimeException ("Tomail no puede estar vacío"); } if (content == null || tomail.isEmpty ()) {Throw New RuntimeException ("Content no puede estar vacío"); } Socket socket = null; InputStream in = null; OutputStream out = null; intente {socket = new Socket (smtpserver, smtpport); socket.setSotimeOut (3000); in = Socket.getInputStream (); out = Socket.getOutputStream (); } Catch (ioException e) {Throw New RuntimeException ("conectarse a" + Smtpserver + ":" + Smtpport + "falló", e); } BufferedReaderProxy Reader = new BufferedReaderProxy (new InputStreamReader (in), showLog); PrintWriterProxy Writer = new PrintWriterProxy (Out, ShowLog); lector.showResponse (); Writer.println ("Helo" + SmtPserver); lector.showResponse (); escritor.println ("Authic Login"); lector.showResponse (); escritor.println (nueva cadena (base64.encodeBase64 (username.getBytes ()))); lector.showResponse (); escritor.println (nueva cadena (base64.encodeBase64 (contraseña.getBytes ()))); lector.showResponse (); escritor.println ("correo de:" + frommail); lector.showResponse (); for (string mail: tomail) {writer.println ("rcpt to:" + mail); lector.showResponse (); } escritor.println ("datos"); Writer.println ("Content-type: text/html"); if (temas! = null) {Writer.println ("Sujeto:" + Sujeto); } escritor.println ("de:" + frommail); escritor.print ("para:"); for (string mail: tomail) {writer.print (mail + ";"); } escritor.println (); escritor.println (); escritor.println (contenido); escritor.println ("."); lector.showResponse (); escritor.println ("dejar"); lector.showResponse (); intente {Socket.close (); } Catch (ioException e) {System.err.println ("Enviar el correo electrónico completo, cerrar el error de socket ocurrió:" + e.getMessage ()); }} public String getSubject () {return Sujem; } public void setSubject (string stem) {this.subject = saters; } public String getFromMail () {return fromMail; } public void setfrommail (string frommail) {this.frommail = frommail; } cadena pública getSmtpServer () {return smtPserver; } public void setsmtpserver (String Smtpserver) {this.smtpserver = smtpserver; } public int getsMtpport () {return smtpport; } public void setsmtpport (int smtpport) {this.smtpport = smtpport; } public String getContent () {return content; } public void setContent (contenido de cadena) {this.content = content; } Lista pública <String> getTomail () {return tomail; } public void settomail (list <string> tomail) {this.tomail = tomail; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } public boolean getShowlog () {return showlog; } public void setShowlog (boolean showlog) {this.showlog = showlog; } La clase estática PrintWriterProxy extiende PrintWriter {private boolean showRequest; Public PrintWriterProxy (outputStream out, boolean showRequest) {super (out, true); this.showRequest = showRequest; } @Override public void println () {if (showRequest) System.out.println (); super.println (); } public void print (String s) {if (showRequest) System.out.print (s); super.print (s); }} La clase estática BufferedReaderProxy extiende BufferedReader {private boolean showResponse = true; Public BufferedReaderProxy (lector en, boolean showResponse) {super (in); this.showResponse = showResponse; } public void showResponse () {try {string line = readline (); Numero de cadena = line.substring (0, 3); int num = -1; intente {num = Integer.ParseInt (número); } catch (Exception e) {} if (num == -1) {Throw New RuntimeException ("Error de información de respuesta:" + línea); } else if (num> = 400) {Throw New RuntimeException ("Enviar correo electrónico fallido:" + línea); } if (showResponse) {System.out.println (línea); }} catch (ioException e) {system.out.println ("Error al obtener respuesta"); }}}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.