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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- java工具類SendEmailUtil實現(xiàn)發(fā)送郵件
- Android使用Javamail發(fā)送Email群發(fā)加附件
- java發(fā)送email一般步驟(實例講解)
- SSH框架網(wǎng)上商城項目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
- Java HtmlEmail 郵件發(fā)送的簡單實現(xiàn)代碼
- java.mail實現(xiàn)發(fā)送郵件
- Java通過stmp協(xié)議發(fā)送郵件
- Java通過exchange協(xié)議發(fā)送郵件
- 淺析JavaMail發(fā)送郵件后再通過JavaMail接收格式問題
- Spring框架JavaMailSender發(fā)送郵件工具類詳解
- SpringBoot JavaMailSender發(fā)送郵件功能
相關文章
Java畢業(yè)設計實戰(zhàn)之線上水果超市商城的實現(xiàn)
這是一個使用了java+SSM+springboot+redis開發(fā)的網(wǎng)上水果超市商城,是一個畢業(yè)設計的實戰(zhàn)練習,具有水果超市商城該有的所有功能,感興趣的朋友快來看看吧2022-01-01
Mybatis-Plus使用p6spy對SQL性能進行監(jiān)控的方法
這篇文章主要介紹了Mybatis-Plus使用p6spy對SQL性能進行監(jiān)控的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
Java將json對象轉(zhuǎn)換為map鍵值對案例詳解
這篇文章主要介紹了Java將json對象轉(zhuǎn)換為map鍵值對案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-09-09
Spring boot + thymeleaf 后端直接給onclick函數(shù)賦值的實現(xiàn)代碼
這篇文章主要介紹了Spring boot + thymeleaf 后端直接給onclick函數(shù)賦值的實現(xiàn)代碼,需要的朋友可以參考下2017-06-06
SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調(diào)用方法
這篇文章主要介紹了SpringBoot2.0 整合 Dubbo框架 實現(xiàn)RPC服務遠程調(diào)用 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
使用SpringMVC的@Validated注解驗證的實現(xiàn)
這篇文章主要介紹了使用SpringMVC的@Validated注解驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
分享Java8中通過Stream對列表進行去重的實現(xiàn)
本文主要介紹了分享Java8中通過Stream對列表進行去重的實現(xiàn),包括兩種方法,具有一定的參考價值,感興趣的可以了解一下2023-11-11

