国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java使用Socket實現SMTP協議發送郵件

2019-11-26 14:16:50
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java 利用Socket實現SMTP協議發送郵件的具體代碼,供大家參考,具體內容如下

package mail; 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;import java.util.ArrayList;import java.util.List; import org.apache.commons.codec.binary.Base64; public class Mail {   public static void main(String[] args) throws 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>你好</h1><br/><img src=/"https://www.baidu.com/img/baidu_jgylogo3.gif?v=39549282.gif/" />");    mail.setShowLog(true);    mail.send();    System.out.println("程序結束");  }   /** 郵件主題 **/  private String subject;  /** 從此地址發出 **/  private String fromMail;  /** 用戶名 **/  private String userName;  /** 登錄密碼 **/  private String password;  /** SMTP 服務器地址 **/  private String smtpServer;  /** SMTP 服務器端口(默認:25) **/  private int smtpPort = 25;  /** 發送到 toMail 中的所有地址 **/  private List<String> toMail;  /** 郵件內容 **/  private String content;  /** 是否顯示日志 **/  private boolean showLog;   public void addToMail(String mail) {    if (toMail == null)      toMail = new ArrayList<String>();    toMail.add(mail);  }   public void send() {    if (smtpServer == null) {      throw new RuntimeException("smtpServer 不能為空");    }    if (userName == null) {      throw new RuntimeException("userName 不能為空");    }    if (password == null) {      throw new RuntimeException("password 不能為空");    }    if (fromMail == null) {      throw new RuntimeException("fromMail 不能為空");    }    if (toMail == null || toMail.isEmpty()) {      throw new RuntimeException("toMail 不能為空");    }    if (content == null || toMail.isEmpty()) {      throw new RuntimeException("content 不能為空");    }     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(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(password.getBytes())));    reader.showResponse();    writer.println("MAIL FROM:" + 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("Subject:" + subject);    }    writer.println("From:" + fromMail);    writer.print("To:");    for (String mail : toMail) {      writer.print(mail + "; ");    }    writer.println();    writer.println();    writer.println(content);    writer.println(".");    reader.showResponse();    writer.println("QUIT");    reader.showResponse();    try {      socket.close();    } catch (IOException e) {      System.err.println("發送郵件完成,關閉 Socket 出錯:" + e.getMessage());    }  }   public String getSubject() {    return subject;  }   public void setSubject(String subject) {    this.subject = subject;  }   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 password;  }   public void setPassword(String password) {    this.password = password;  }   public boolean getShowLog() {    return showLog;  }   public void setShowLog(boolean showLog) {    this.showLog = showLog;  }   static class PrintWriterProxy extends 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);    }  }   static class BufferedReaderProxy extends BufferedReader {    private boolean showResponse = true;     public BufferedReaderProxy(Reader in, boolean showResponse) {      super(in);      this.showResponse = showResponse;    }     public void showResponse() {      try {        String line = readLine();        String number = line.substring(0, 3);        int num = -1;        try {          num = Integer.parseInt(number);        } catch (Exception e) {        }        if (num == -1) {          throw new RuntimeException("響應信息錯誤 : " + line);        } else if (num >= 400) {          throw new RuntimeException("發送郵件失敗 : " + line);        }        if (showResponse) {          System.out.println(line);        }      } catch (IOException e) {        System.out.println("獲取響應失敗");      }    }   }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麟游县| 莎车县| 陕西省| 阳朔县| 金沙县| 思南县| 衡阳县| 祁门县| 嘉义县| 商丘市| 英吉沙县| 开阳县| 洛浦县| 交口县| 开江县| 泰来县| 民权县| 宜兴市| 石狮市| 沾化县| 青州市| 天镇县| 彭阳县| 堆龙德庆县| 固镇县| 隆林| 无极县| 德保县| 克拉玛依市| 仲巴县| 邢台县| 新野县| 邳州市| 二手房| 涞源县| 东乡县| 尉犁县| 青龙| 报价| 佛坪县| 汾阳市|