最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)發(fā)送email小案例

 更新時間:2020年02月11日 18:00:31   作者:YangChingyuk  
這篇文章主要為大家詳細介紹了java實現(xiàn)發(fā)送email小案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這是一個小的發(fā)送emai的案例,供大家參考,具體內(nèi)容如下

代碼里面放了很多注解,這里多說無益。

發(fā)送郵件實體類:

package com.yqx.emaildemo.demo;

import lombok.Data;
import org.apache.commons.mail.EmailAttachment;

import java.util.List;

/**
 * 發(fā)送郵件實體類
 *
 * @author YangChingyu-k
 * @date 2019/10/10 14:59
 */
@Data
public class MailInfo {

 /**
  * 收件人
  */
 private List<String> toAddress = null;
 /**
  * 抄送人地址
  */
 private List<String> ccAddress = null;
 /**
  * 密送人
  */
 private List<String> bccAddress = null;
 /**
  * 附件信息
  */
 private List<EmailAttachment> emailAttachments = null;
 /**
  * 郵件主題
  */
 private String subject;
 /**
  * 郵件文本內(nèi)容
  */
 private String content;

 public void addToAddress(String toAddress) {
  this.toAddress.add(toAddress);
 }

 public void addToAddress(List<String> toAddress) {
  this.toAddress.addAll(toAddress);
 }

 public void addCcAddress (List<String> ccAddress) {
  if (!ccAddress.isEmpty()) {
   this.ccAddress.addAll(ccAddress);
  }
 }

}

工具類:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.HtmlEmail;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 發(fā)送郵件輔助工具類
 *
 * @author YangChingyu-k
 * @date 2019/10/10 15:12
 */
public class MailUtil {

 /**
  * 郵箱
  */
 private static String mailServerHost = "smtp.qq.com";

 private static String mailSenderAddress = "xxx@qq.com";

 private static String mailSenderNick = "YangChingyu-k";

 private static String mailSenderUserName = "xxx@qq.com";
 // 這里的密碼是開啟服務之后的授權碼
 private static String mailSenderPassWord = "xxx";

 /**
  * 發(fā)送郵件(Html格式,支持附件)
  *
  * @param mailInfo
  */
 public static void sendMail(MailInfo mailInfo) {
  try {
   // 利用jar包中提供的HtmlEmail類
   HtmlEmail email = new HtmlEmail();
   // 配置信息
   // 這里用的是QQ郵箱的地址,不同的郵箱采用的地址不同,官方有說明
   email.setHostName(mailServerHost);
   // 發(fā)送的地址,發(fā)送者昵稱
   email.setFrom(mailSenderAddress, mailSenderNick);
   // 用戶名,密碼(這里的密碼不是登錄密碼,而是開啟POP3/SMTP服務之后獲取的授權密碼)
   email.setAuthentication(mailSenderUserName, mailSenderPassWord);
   // 編碼
   email.setCharset("UTF-8");
   // 主題
   email.setSubject(mailInfo.getSubject());
   // 內(nèi)容
   email.setHtmlMsg(mailInfo.getContent());

   // 添加附件
   List<EmailAttachment> emailAttachments = mailInfo.getEmailAttachments();
   if (!emailAttachments.isEmpty()) {
    for (int i=0; i<emailAttachments.size(); i++) {
     email.attach(emailAttachments.get(i));
    }
   }

   // 收件人
   List<String> toAddress = mailInfo.getToAddress();
   if (!toAddress.isEmpty()) {
    for (int i=0; i<toAddress.size(); i++) {
     email.addTo(toAddress.get(i));
    }
   }

   // 抄送人
   List<String> ccAddress = mailInfo.getCcAddress();
   if (!ccAddress.isEmpty()) {
    for (int i=0; i<ccAddress.size(); i++) {
     email.addCc(ccAddress.get(i));
    }
   }

   // 密送人
   List<String> bccAddress = mailInfo.getBccAddress();
   if (!bccAddress.isEmpty()) {
    for (int i=0; i<bccAddress.size(); i++) {
     email.addBcc(bccAddress.get(i));
    }
   }

   // 如果官方郵件關閉了,可以使用SSL的方式發(fā)送
   // 使用QQ郵箱是暫時不需要的
   // email.setSSLOnConnect(true);

   // 發(fā)送
   email.send();
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   System.out.println("發(fā)送時間:" + sdf.format(new Date()));
   System.out.println("發(fā)送人:" + mailSenderNick);
   if (!toAddress.isEmpty()) {
    for (int i=0;i<toAddress.size();i++) {
     System.out.println("接收人:" + toAddress.get(i));
    }
   }
   System.out.println("郵件發(fā)送成功...");
   System.out.println("端口:" + email.getSmtpPort());

  } catch (Exception e) {
   System.out.println("郵件發(fā)送失敗, error: " + e.getMessage());
   e.printStackTrace();
  }
 }

}

測試main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;
import java.util.List;

/**
 * 測試:發(fā)送郵件 (先new出郵件實體類,賦值之后,再利用工具類方法進行發(fā)送操作)
 * <p>
 *  注重點:
 *  1) 郵箱需要開啟POP3/SMTP服務
 *  2) 使用的郵箱密碼不是登錄時的密碼,而是開啟以上服務之后的授權碼
 *  3) 郵箱地址必須是正確存在的,否則將會被退信處理
 * </p>
 *
 * @author YangChingyu-k
 * @date 2019/10/10 15:53
 */
public class MainTest {

 public static void main(String[] args) {

  MailInfo mailInfo = new MailInfo();

  // 收件人
  List<String> toList = new ArrayList<>();
  toList.add("xxx.com");

  // 抄送人
  List<String> ccList = new ArrayList<>();
  ccList.add("xxx@qq.com");

  // 密送人
  List<String> bccList = new ArrayList<>();
  bccList.add("xxx@qq.com");

  // 添加附件
  EmailAttachment emailAttachment = new EmailAttachment();
  // 文件全路徑
  emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");
  // 附件:文件全名 (文件名 + .格式)
  emailAttachment.setName("這是一個測試的附件.txt");
  // 多個附件
  List<EmailAttachment> emailAttachments = new ArrayList<>();
  emailAttachments.add(emailAttachment);
  mailInfo.setEmailAttachments(emailAttachments);

  // 收件人
  mailInfo.setToAddress(toList);
  // 抄送人
  mailInfo.setCcAddress(ccList);
  // 密送人
  mailInfo.setBccAddress(bccList);
  // 主題
  mailInfo.setSubject("This is a object");
  // 內(nèi)容
  mailInfo.setContent("<h2>這是一段測試的內(nèi)容~</h2>");

  // 調(diào)用工具類方法進行發(fā)送
  MailUtil.sendMail(mailInfo);

 }

}

我覺得注釋應該寫得很清楚了吧,這是作為一個demo來寫的,分享一下,在寫的時候一直遇到找不到地址之類的,或者服務沒開之類的報錯,這里都寫了注重點的東西,這是第一次在代碼里面一直寫很多注釋。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringMvc/SpringBoot HTTP通信加解密的實現(xiàn)

    SpringMvc/SpringBoot HTTP通信加解密的實現(xiàn)

    這篇文章主要介紹了SpringMvc/SpringBoot HTTP通信加解密的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • RocketMQ中的消費者啟動流程解讀

    RocketMQ中的消費者啟動流程解讀

    這篇文章主要介紹了RocketMQ中的消費者啟動流程解讀,RocketMQ是一款高性能、高可靠性的分布式消息中間件,消費者是RocketMQ中的重要組成部分,消費者負責從消息隊列中獲取消息并進行處理,需要的朋友可以參考下
    2023-10-10
  • 使用Java后端操作Docker的詳細教程

    使用Java后端操作Docker的詳細教程

    Docker 是現(xiàn)代開發(fā)和部署流程中不可或缺的一部分,它簡化了應用程序的環(huán)境配置、打包和分發(fā),使得在不同機器上運行相同的應用變得更加輕松和一致,本文將詳細介紹如何使用命令行工具(CMD)操控 Docker 來配置環(huán)境,需要的朋友可以參考下
    2025-02-02
  • 利用Java理解sql的語法(實例講解)

    利用Java理解sql的語法(實例講解)

    下面小編就為大家分享一篇利用Java理解sql的語法(實例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • SpringBoot整合RocketMQ實現(xiàn)消息發(fā)送和接收的詳細步驟

    SpringBoot整合RocketMQ實現(xiàn)消息發(fā)送和接收的詳細步驟

    這篇文章主要介紹了SpringBoot整合RocketMQ實現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • Java中Struts2的值棧ValueStack詳解

    Java中Struts2的值棧ValueStack詳解

    這篇文章主要介紹了Java中Struts2的值棧ValueStack詳解,值棧(ValueStack)就是 OGNL 表達式存取數(shù)據(jù)的地方,在一個值棧中,封裝了一次請求所需要的所有數(shù)據(jù),需要的朋友可以參考下
    2023-08-08
  • Java高效提取PDF文件指定坐標的文本內(nèi)容實戰(zhàn)代碼

    Java高效提取PDF文件指定坐標的文本內(nèi)容實戰(zhàn)代碼

    在日常工作中,有時可能會需要從龐大的PDF文檔中提取其中所包含的文本內(nèi)容,下面這篇文章主要給大家介紹了關于如何利用Java高效提取PDF文件指定坐標的文本內(nèi)容,需要的朋友可以參考下
    2024-01-01
  • 關于@Value注解取不到值的幾種情況

    關于@Value注解取不到值的幾種情況

    這篇文章主要介紹了關于@Value注解取不到值的幾種情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Hibernate組件映射代碼詳解

    Hibernate組件映射代碼詳解

    這篇文章主要介紹了Hibernate組件映射代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java swing實現(xiàn)簡單的五子棋游戲

    java swing實現(xiàn)簡單的五子棋游戲

    這篇文章主要為大家詳細介紹了java swing實現(xiàn)簡單的五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評論

锦屏县| 无锡市| 临澧县| 平阳县| 阜新| 乌兰察布市| 夏邑县| 孟连| 乌拉特前旗| 凭祥市| 宣汉县| 咸丰县| 永兴县| 清新县| 北宁市| 宜川县| 延川县| 桑植县| 龙胜| 搜索| 望谟县| 江北区| 安国市| 惠安县| 屏东市| 绥江县| 通州市| 文安县| 商水县| 临汾市| 河间市| 睢宁县| 乡宁县| 临江市| 长垣县| 广州市| 中阳县| 昔阳县| 太谷县| 弥勒县| 正阳县|