溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java實現發(fā)送email的小案例

發(fā)布時間:2021-04-14 13:58:00 來源:億速云 閱讀:118 作者:小新 欄目:編程語言

小編給大家分享一下使用java實現發(fā)送email的小案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

具體內容如下

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

發(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;
 /**
  * 郵件文本內容
  */
 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());
   // 內容
   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");
  // 內容
  mailInfo.setContent("<h3>這是一段測試的內容~</h3>");

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

 }

}

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

以上是“使用java實現發(fā)送email的小案例”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI