欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼

 更新時(shí)間:2016年06月03日 16:06:11   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Java 項(xiàng)目中常?;赜龅桨l(fā)送郵件

Java 發(fā)送郵件有幾種,今天先給大家介紹用 HtmlEmail 來(lái)發(fā)送郵件,我這里是用 Maven 來(lái)搭建的

HtmlEmail 可以抄帶HTML

首先 需要導(dǎo)入jar 包

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

然后我們來(lái)建立一個(gè)發(fā)送郵件的 Mail 類 JavaBean

public class Mail implements Serializable{

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

  // 服務(wù)器地址 
  private String host;
  // 發(fā)件人的郵箱 
  private String sender; 
  // 發(fā)件人昵稱 
  private String name; 
  // 賬號(hào) 
  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;
  }
}

然后再來(lái)創(chuàng)建一個(gè)發(fā)送郵件的工具類 MailUtil

public class MailUtil {

  public Boolean send(Mail mail){
    HtmlEmail email = new HtmlEmail();
    try {
      // 這里是SMTP發(fā)送服務(wù)器的名字:163的如下:"smtp.163.com" 
      email.setHostName(mail.getHost());
      // 字符編碼集的設(shè)置 
      email.setCharset(Mail.ENCODEING);
      // 發(fā)送人的郵箱 
      email.setFrom(mail.getSender(), mail.getName()); 
      // 如果需要認(rèn)證信息的話,設(shè)置認(rèn)證:用戶名-密碼。分別為發(fā)件人在郵件服務(wù)器上的注冊(cè)名稱和密碼 
      email.setAuthentication(mail.getUsername(), mail.getPassword());

      // 設(shè)置收件人信息
      setTo(email, mail);
      // 設(shè)置抄送人信息
      setCc(email, mail);
      // 設(shè)置密送人信息
      setBcc(email, mail);
      // 要發(fā)送的郵件主題 
      email.setSubject(mail.getSubject());
      // 要發(fā)送的信息,由于使用了HtmlEmail,可以在郵件內(nèi)容中使用HTML標(biāo)簽 
      email.setHtmlMsg(mail.getMessage());
      // 發(fā)送 
      email.send();
      if (Log.isDebugEnabled()) {
        Log.info(mail.getSender() + " 發(fā)送郵件到 " + mail.getReceiver());
      }
      return true;
    } catch (Exception e) {
      e.printStackTrace();
      Log.info(mail.getSender() + " 發(fā)送郵件到 " + mail.getReceiver() + " 失敗");
      return false;
    }
  }

  /**
   * 設(shè)置收件人信息
   * 
   * @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());
        }
      }
    }
  }

  /**
   * 設(shè)置抄送人信息
   * 
   * @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());
        }
      }
    }
  }

  /**
   * 設(shè)置密送人信息
   * 
   * @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());
        }
      }
    }
  }
}

寫到這里,大概也就差不多了,萬(wàn)里長(zhǎng)征只有最后一步了

測(cè)試,測(cè)試,測(cè)試

這里編寫一個(gè) junit 方法來(lái)測(cè)試

@Test
  public void sendMail(){
    Mail mail = new Mail();
    // 設(shè)置郵件服務(wù)器 
    mail.setHost("smtp.exmail.qq.com");
    // 發(fā)件人郵件地址
    mail.setSender("chenhao@kezhanbang.cn");
    // 發(fā)件人名稱
    mail.setName("Java.小學(xué)生");
    // 登錄賬號(hào),一般都是和郵箱名一樣吧 
    mail.setUsername("chenhao@kezhanbang.cn");
    // 發(fā)件人郵箱的登錄密碼 
    mail.setPassword("xxxxxxxx");
    // 接收人 
    mail.setReceiver("huntertochen@163.com");
    mail.setReceiverName("我要女票");
    mail.setSubject("萬(wàn)里長(zhǎng)征最后一步測(cè)試");
    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>我來(lái)看看郵件是否發(fā)送成功呢</h1><br/><br/>";
    html += "<p>下面是通過(guò)該協(xié)議可以創(chuàng)建一個(gè)指向電子郵件地址的超級(jí)鏈接,通過(guò)該鏈接可以在Internet中發(fā)送電子郵件</p><br/>";
    html += "<a href=\"mailto:huntereagle@foxmail.com?subject=test&cc=huntertochen@163.com&body=use mailto sample\">send mail</a>";
    html += "</div>";
    html += "</body></html>";
    mail.setMessage(html);
    
    new MailUtil().send(mail);
  }

趕緊登錄郵箱看看吧

來(lái)看看這里 主題 內(nèi)容,發(fā)送人名稱和收件人名稱是否和代碼寫的一樣呢,如果一樣的話,恭喜你成功啦

到這,其實(shí)發(fā)送郵件就算完了?。?!

這里在啰嗦最后一個(gè)小知識(shí)點(diǎn) mailto

mailto: 通過(guò)該協(xié)議可以創(chuàng)建一個(gè)指向電子郵件地址的超級(jí)鏈接,通過(guò)該鏈接可以在Internet中發(fā)送電子郵件

我們點(diǎn)擊 send mail 會(huì)打開你郵件客戶端一個(gè)發(fā)送界面,如果你有寫抄帶信息,也會(huì)給你帶上

以上這篇Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisX-Generator自動(dòng)代碼生成插件教程

    MybatisX-Generator自動(dòng)代碼生成插件教程

    這篇文章主要介紹了MybatisX-Generator自動(dòng)代碼生成插件教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析一之零配置文件化

    Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析一之零配置文件化

    Dwr對(duì)我來(lái)說(shuō)最重要的功能點(diǎn)就是反向Ajax調(diào)用,通俗來(lái)將就是后端可以直接調(diào)用前端的JS方法(只要在所能訪問(wèn)的范圍內(nèi)),這也就是Dwr的真正來(lái)由,當(dāng)然它也有最基本的前端直接調(diào)用后端的特性,省去了我們經(jīng)常的一般Ajax調(diào)用
    2016-04-04
  • 詳解Spring中使用xml配置bean的細(xì)節(jié)

    詳解Spring中使用xml配置bean的細(xì)節(jié)

    本篇文章主要介紹了Spring中使用xml配置bean的細(xì)節(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • springboot后端如何實(shí)現(xiàn)攜帶token登陸

    springboot后端如何實(shí)現(xiàn)攜帶token登陸

    這篇文章主要介紹了springboot后端如何實(shí)現(xiàn)攜帶token登陸,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    這篇文章主要介紹了SpringBoot外部化配置示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • java網(wǎng)絡(luò)編程學(xué)習(xí)java聊天程序代碼分享

    java網(wǎng)絡(luò)編程學(xué)習(xí)java聊天程序代碼分享

    java聊天程序代碼分享,大家參考使用吧
    2013-12-12
  • 淺談同步監(jiān)視器之同步代碼塊、同步方法

    淺談同步監(jiān)視器之同步代碼塊、同步方法

    下面小編就為大家?guī)?lái)一篇淺談同步監(jiān)視器之同步代碼塊、同步方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 淺談MyBatis中@MapKey的妙用

    淺談MyBatis中@MapKey的妙用

    這篇文章主要介紹了MyBatis中@MapKey的妙用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot打印詳細(xì)啟動(dòng)異常信息

    SpringBoot打印詳細(xì)啟動(dòng)異常信息

    這篇文章主要介紹了SpringBoot打印詳細(xì)啟動(dòng)異常信息,本文包含了詳細(xì)的過(guò)程解析與案例,概要的說(shuō)明了如何去使用打印啟動(dòng)異常信息,需要的朋友可以參考下
    2021-06-06
  • 深入剖析ArrayList的remove方法

    深入剖析ArrayList的remove方法

    這篇文章主要介紹了ArrayList的remove方法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。</p>
    2021-09-09

最新評(píng)論