Cet exemple partage le code spécifique de Java à l'aide de socket pour implémenter le protocole SMTP pour envoyer des e-mails pour votre référence. Le contenu spécifique est le suivant
Courrier des forfaits; Importer java.io.bufferedReader; import java.io.ioException; import java.io.inputstream; import java.io.inputstreamreader; import java.io.outputstream; import java.io.printwriter; java.util.list; import java.util.list; import org.apache.commons.codec.binary.base64; classe publique Mail {public static void main (String [] args) lève 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> Bonjour </h1> <br/> <img src = /" https://www.baidu.com/img/baidu_jgylogo3.gif?v=39549282.gif/ "/>"); Mail.setShowlog (true); Mail.Send (); System.out.println ("Fin du programme"); } / ** Sujet par e-mail ** / Sujet de chaîne privée; / ** Envoyer à partir de cette adresse ** / chaîne privée FromMail; / ** Nom d'utilisateur ** / Nom d'utilisateur de chaîne privée; / ** Mot de passe de connexion ** / Mot de passe de chaîne privée; / ** Adresse du serveur SMTP ** / chaîne privée smtpServer; / ** Port serveur SMTP (par défaut: 25) ** / private int smtpport = 25; / ** Toutes les adresses envoyées à Tomail ** / Liste privée <string> Tomail; / ** MAIL Contenu ** / Contenu de chaîne privée; / ** s'il faut afficher le journal ** / booléen privé showlog; public void addtomail (String Mail) {if (tomail == null) tomail = new ArrayList <string> (); tomail.add (courrier); } public void Send () {if (smtpServer == null) {throw new RuntimeException ("smtpServer ne peut pas être vide"); } if (username == null) {throw new RuntimeException ("username ne peut pas être vide"); } if (mot de passe == null) {lancer un nouveau runtimeException ("mot de passe ne peut pas être vide"); } if (FroMail == null) {Throw New RuntimeException ("FromMail ne peut pas être vide"); } if (tomail == null || tomail.isempty ()) {throw new RuntimeException ("Tomail ne peut pas être vide"); } if (content == null || tomail.isempty ()) {throw new RuntimeException ("Content ne peut pas être vide"); } Socket socket = null; InputStream dans = null; OutputStream out = null; essayez {socket = new socket (smtpServer, smtpport); Socket.SetSoTimeout (3000); dans = socket.getInputStream (); out = socket.getOutputStream (); } catch (ioException e) {lancer un nouveau runtimeException ("connecter à" + smtpServer + ":" + smtpport + "a échoué", e); } BufferedReaderProxy Reader = new BuffereDReaderProxy (new inputStreamReader (in), showlog); Printwriterproxy writer = new PrintWriterProxy (out, showlog); Reader.showResponse (); writer.println ("heLo" + smtpServer); Reader.showResponse (); writer.println ("Auth Login"); Reader.showResponse (); writer.println (new String (base64.EncodeBase64 (username.getBytes ()))); Reader.showResponse (); writer.println (new String (base64.EncodeBase64 (mot de passe.GetBytes ()))); Reader.showResponse (); writer.println ("Mail de:" + FromMail); Reader.showResponse (); for (String Mail: tomail) {writer.println ("rcpt to:" + mail); Reader.showResponse (); } writer.println ("data"); writer.println ("contenu-type: text / html"); if (sujet! = null) {writer.println ("Sujet:" + sujet); } writer.println ("de:" + FromMail); écrivain.print ("à:"); for (String Mail: tomail) {writer.print (mail + ";"); } writer.println (); écrivain.println (); writer.println (contenu); écrivain.println ("."); Reader.showResponse (); écrivain.println ("quit"); Reader.showResponse (); essayez {socket.close (); } catch (ioException e) {System.err.println ("Envoyer l'e-mail terminé, fermer l'erreur de socket:" + e.getMessage ()); }} public String getSubject () {return sujet; } public void setSubject (String Subject) {this.subject = sujet; } public String getFrommail () {return FromMail; } public void setFrommail (String FromMail) {this.frommail = FromMail; } public String 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 (String Content) {this.Content = Content; } public list <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 mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public boolean getShowlog () {return showlog; } public void SetShowlog (boolean showlog) {this.showlog = showlog; } classe statique PrintWriterProxy étend 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); }} classe statique BufferedReaderProxy étend BufferedReader {private boolean showResponse = true; Public BufferedReaderProxy (lecteur IN, Boolean ShowResponse) {super (in); this.showResponse = showResponse; } public void showResponse () {try {String line = readLine (); Numéro de chaîne = Line.SubString (0, 3); int num = -1; try {num = Integer.ParseInt (numéro); } catch (exception e) {} if (num == -1) {throw new RuntimeException ("Erreur d'information de réponse:" + ligne); } else if (num> = 400) {lancez new RuntimeException ("Envoyer un e-mail échoué:" + ligne); } if (showResponse) {System.out.println (ligne); }} catch (ioException e) {System.out.println ("Échec de la réponse"); }}}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.