程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java HtmlEmail 郵件發送的簡略完成代碼

Java HtmlEmail 郵件發送的簡略完成代碼

編輯:關於JAVA

Java HtmlEmail 郵件發送的簡略完成代碼。本站提示廣大學習愛好者:(Java HtmlEmail 郵件發送的簡略完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Java HtmlEmail 郵件發送的簡略完成代碼正文


Java 項目中經常回碰到發送郵件

Java 發送郵件有幾種,明天先給年夜家引見用 HtmlEmail 來發送郵件,我這裡是用 Maven 來搭建的

HtmlEmail 可以抄帶HTML

起首 須要導入jar 包

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-email</artifactId>
   <version>1.4</version>
 </dependency>

然後我們來樹立一個發送郵件的 Mail 類 JavaBean

public class Mail implements Serializable{

  private static final long serialVersionUID = -6390720891150157552L;
  public static final String ENCODEING = "UTF-8"; 

  // 辦事器地址 
  private String host;
  // 發件人的郵箱 
  private String sender; 
  // 發件人昵稱 
  private String name; 
  // 賬號 
  private String username; 
  // 暗碼 
  private String password; 
  // 收件人的郵箱 
  private String receiver;
  // 收件人的稱號
  private String receiverName;
  // 收件人的郵箱(key)和稱號(value)
  private Map<String, String> to;
  // 抄送人的郵箱(key)和稱號(value)
  private Map<String, String> cc;
  // 機密抄送人的郵箱(key)和稱號(value)
  private Map<String, String> bcc;
  // 主題 
  private String subject; 
  // 信息(支撐HTML)
  private String message;

  public String getHost() {
    return host;
  }
  public void setHost(String host) {
    this.host = host;
  }
  public String getSender() {
    return sender;
  }
  public void setSender(String sender) {
    this.sender = sender;
  }
  public String getReceiver() {
    return receiver;
  }
  public void setReceiver(String receiver) {
    this.receiver = receiver;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  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 String getSubject() {
    return subject;
  }
  public void setSubject(String subject) {
    this.subject = subject;
  }
  public String getMessage() {
    return message;
  }
  public void setMessage(String message) {
    this.message = message;
  }
  public String getReceiverName() {
    return receiverName;
  }
  public void setReceiverName(String receiverName) {
    this.receiverName = receiverName;
  }
  public Map<String, String> getTo() {
    return to;
  }
  public void setTo(Map<String, String> to) {
    this.to = to;
  }
  public Map<String, String> getCc() {
    return cc;
  }
  public void setCc(Map<String, String> cc) {
    this.cc = cc;
  }
  public Map<String, String> getBcc() {
    return bcc;
  }
  public void setBcc(Map<String, String> bcc) {
    this.bcc = bcc;
  }
}

然後再來創立一個發送郵件的對象類 MailUtil

public class MailUtil {

  public Boolean send(Mail mail){
    HtmlEmail email = new HtmlEmail();
    try {
      // 這裡是SMTP發送辦事器的名字:163的以下:"smtp.163.com" 
      email.setHostName(mail.getHost());
      // 字符編碼集的設置 
      email.setCharset(Mail.ENCODEING);
      // 發送人的郵箱 
      email.setFrom(mail.getSender(), mail.getName()); 
      // 假如須要認證信息的話,設置認證:用戶名-暗碼。分離為發件人在郵件辦事器上的注冊稱號和暗碼 
      email.setAuthentication(mail.getUsername(), mail.getPassword());

      // 設置收件人信息
      setTo(email, mail);
      // 設置抄送人信息
      setCc(email, mail);
      // 設置密送人信息
      setBcc(email, mail);
      // 要發送的郵件主題 
      email.setSubject(mail.getSubject());
      // 要發送的信息,因為應用了HtmlEmail,可以在郵件內容中應用HTML標簽 
      email.setHtmlMsg(mail.getMessage());
      // 發送 
      email.send();
      if (Log.isDebugEnabled()) {
        Log.info(mail.getSender() + " 發送郵件到 " + mail.getReceiver());
      }
      return true;
    } catch (Exception e) {
      e.printStackTrace();
      Log.info(mail.getSender() + " 發送郵件到 " + mail.getReceiver() + " 掉敗");
      return false;
    }
  }

  /**
   * 設置收件人信息
   * 
   * @param email 
   * @param mail
   * @throws EmailException
   */
  private void setTo(HtmlEmail email, Mail mail) throws EmailException{
    // 收件人不為空
    if (StringUtils.isNotEmpty(mail.getReceiver())) {
      // 收件人稱號不為空
      if (StringUtils.isNotEmpty(mail.getReceiverName())) {
        email.addTo(mail.getReceiver(), mail.getReceiverName());
      } else {
        email.addTo(mail.getReceiver());
      }
    }
    // 收件人 Map 不為空
    if (mail.getTo() != null) {
      for (Map.Entry<String, String> entry : mail.getTo().entrySet()) {
        // 收件人稱號不為空
        if (StringUtils.isNotEmpty(entry.getValue())) {
          email.addTo(entry.getKey(), entry.getValue());
        } else {
          email.addTo(entry.getKey());
        }
      }
    }
  }

  /**
   * 設置抄送人信息
   * 
   * @param email 
   * @param mail
   * @throws EmailException
   */
  private void setCc(HtmlEmail email, Mail mail) throws EmailException{
    // 抄送人 Map 不為空
    if (mail.getCc() != null) {
      for (Map.Entry<String, String> entry : mail.getCc().entrySet()) {
        // 抄送人稱號不為空
        if (StringUtils.isNotEmpty(entry.getValue())) {
          email.addCc(entry.getKey(), entry.getValue());
        } else {
          email.addCc(entry.getKey());
        }
      }
    }
  }

  /**
   * 設置密送人信息
   * 
   * @param email 
   * @param mail
   * @throws EmailException
   */
  private void setBcc(HtmlEmail email, Mail mail) throws EmailException{
    // 密送人 Map 不為空
    if (mail.getBcc() != null) {
      for (Map.Entry<String, String> entry : mail.getBcc().entrySet()) {
        // 密送人稱號不為空
        if (StringUtils.isNotEmpty(entry.getValue())) {
          email.addBcc(entry.getKey(), entry.getValue());
        } else {
          email.addBcc(entry.getKey());
        }
      }
    }
  }
}

寫到這裡,年夜概也就差不多了,萬裡長征只要最初一步了

測試,測試,測試

這裡編寫一個 junit 辦法來測試

@Test
  public void sendMail(){
    Mail mail = new Mail();
    // 設置郵件辦事器 
    mail.setHost("smtp.exmail.qq.com");
    // 發件人郵件地址
    mail.setSender("[email protected]");
    // 發件人稱號
    mail.setName("Java.小先生");
    // 登錄賬號,普通都是和郵箱名一樣吧 
    mail.setUsername("[email protected]");
    // 發件人郵箱的登錄暗碼 
    mail.setPassword("xxxxxxxx");
    // 吸收人 
    mail.setReceiver("[email protected]");
    mail.setReceiverName("我要女票");
    mail.setSubject("萬裡長征最初一步測試");
    String html = "<!DOCTYPE html>";
    html += "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
    html += "<title>Insert title here</title>";
    html += "</head><body>";
    html += "<div style=\"width:600px;height:400px;margin:50px auto;\">";
    html += "<h1>我來看看郵件能否發送勝利呢</h1><br/><br/>";
    html += "<p>上面是經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件</p><br/>";
    html += "<a href=\"mailto:[email protected]?[email protected]&body=use mailto sample\">send mail</a>";
    html += "</div>";
    html += "</body></html>";
    mail.setMessage(html);
    
    new MailUtil().send(mail);
  }

趕忙登錄郵箱看看吧

來看看這裡 主題 內容,發送人稱號和收件人稱號能否和代碼寫的一樣呢,假如一樣的話,祝賀你勝利啦

到這,其實發送郵件就算完了!!!

這裡在煩瑣最初一個小常識點 mailto

mailto: 經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件

我們點擊 send mail 會翻開你郵件客戶端一個發送界面,假如你有寫抄帶信息,也會給你帶上

以上這篇Java HtmlEmail 郵件發送的簡略完成代碼就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved