이 예제는 소켓을 사용하여 특정 Java 코드를 공유하여 참조 용 이메일을 보내기위한 SMTP 프로토콜을 구현합니다. 특정 내용은 다음과 같습니다
패키지 메일; 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.reader; import java.net.socket; java.util. java.util.list; import java.util.list; import org.apache.commons.codec.binary.base64; public class mail {public static void main (String [] args)은 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 ( "테스트 메일"); mail.setContent ( "<H1> hello </h1> <br/> <img src =/"https://www.baidu.com/img/baidu_jgylogo3.gif?v=39549282.gif/ "/>"); mail.setshowlog (true); mail.send (); System.out.println ( "프로그램 종료"); } / ** 이메일 주제 ** / 개인 문자열 주제; / **이 주소에서 보내기 **/ 개인 문자열에서 Mail; / ** 사용자 이름 **/ 개인 문자열 사용자 이름; / ** 로그인 비밀번호 **/ 개인 문자열 비밀번호; / ** SMTP 서버 주소 **/ 개인 문자열 smtpserver; / ** SMTP 서버 포트 (기본값 : 25) **/ private int smtpport = 25; / ** Tomail에 전송 된 모든 주소 **/ private list <string> tomail; / ** 메일 컨텐츠 **/ 개인 문자열 컨텐츠; / ** 로그 표시 여부 **/ Private Boolean Showlog; public void addTomail (문자열 메일) {if (tomail == null) tomail = new Arraylist <string> (); tomail.add (메일); } public void send () {if (smtpserver == null) {throw new runtimeexception ( "smtpserver가 비어있을 수 없음"); } if (username == null) {Throw new runtimeexception ( "사용자 이름이 비어있을 수 없음"); } if (password == null) {throw new runtimeexception ( "비밀번호가 비어있을 수 없음"); } if (frommail == null) {throw new runtimeexception ( "Mail이 비어있을 수 없다"); } if (tomail == null || tomail.isempty ()) {throw new runtimeexception ( "Tomail이 비어있을 수 없음"); } if (content == null || tomail.isempty ()) {새로운 runtimeexception ( "내용이 비어있을 수 없음"); } Socket Socket = NULL; inputStream in = null; outputStream out = null; try {socket = new Socket (smtpserver, smtpport); Socket.setSotimeout (3000); in = socket.getInputStream (); out = socket.getOutputStream (); } catch (ioexception e) {throw new runtimeexception ( " + smtpserver +"에 연결 : " + smtpport +"실패 ", e); } bufferedReaderProxy reader = new bufferedReaderProxy (새로운 InputStreamReader (in), showlog); PrintwriterProxy Writer = New PrintwriterProxy (Out, Showlog); reader.showResponse (); Writer.println ( "Helo" + smtpserver); reader.showResponse (); Writer.println ( "인증 로그인"); reader.showResponse (); Writer.println (new String (base64.encodebase64 (username.getBytes ())); reader.showResponse (); writer.println (new String (base64.encodebase64 (password.getBytes ())); reader.showResponse (); Writer.println ( "메일 :" + Frommail); reader.showResponse (); for (string mail : tomail) {writer.println ( "rcpt to :" + mail); reader.showResponse (); } writer.println ( "data"); Writer.println ( "Content-Type : Text/Html"); if (subject! = null) {writer.println ( "주제 :" + 주제); } writer.println ( "From :" + Frommail); Writer.print ( "to :"); for (string mail : tomail) {writer.print (mail + ";"); } writer.println (); Writer.println (); Writer.println (내용); Writer.println ( "."); reader.showResponse (); Writer.println ( "Quit"); reader.showResponse (); try {socket.close (); } catch (ioException e) {System.err.println ( "이메일을 보내면 소켓 오류가 닫히면 다음과 같이 닫습니다." + e.getMessage ()); }} public string getSubject () {return subject; } public void setSubject (문자열 주제) {this.subject = subject; } public String getFrommail () {return frommail; } public void setfrommail (문자열 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 컨텐츠; } public void setContent (문자열 내용) {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 password; } public void setpassword (문자열 비밀번호) {this.password = password; } public boolean getshowlog () {return showlog; } public void setshowlog (boolean showlog) {this.showlog = showlog; } 정적 클래스 PrintWriterProxy는 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 (문자열 s) {if (showRequest) system.out.print (s); Super.print (들); }} 정적 클래스 BufferedReaderProxy 확장 BufferedReader {private boolean showResponse = true; Public BufferedReaderProxy (Reader In, Boolean ShowResponse) {Super (in); this.showResponse = showResponse; } public void showResponse () {try {String line = readline (); 문자열 번호 = line.substring (0, 3); int num = -1; try {num = integer.parseint (number); } catch (예외 e) {} if (num == -1) {새로운 runtimeexception ( "응답 정보 오류 :" + line); } else if (num> = 400) {throw new runtimeexception ( "이메일 보내기 실패 :" + line); } if (showResponse) {system.out.println (line); }} catch (ioexception e) {System.out.println ( "응답을 얻지 못했다"); }}}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.