java實(shí)現(xiàn)發(fā)送email小案例
這是一個(gè)小的發(fā)送emai的案例,供大家參考,具體內(nèi)容如下
代碼里面放了很多注解,這里多說無益。
發(fā)送郵件實(shí)體類:
package com.yqx.emaildemo.demo;
import lombok.Data;
import org.apache.commons.mail.EmailAttachment;
import java.util.List;
/**
* 發(fā)送郵件實(shí)體類
*
* @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";
// 這里的密碼是開啟服務(wù)之后的授權(quán)碼
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服務(wù)之后獲取的授權(quán)密碼)
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));
}
}
// 如果官方郵件關(guān)閉了,可以使用SSL的方式發(fā)送
// 使用QQ郵箱是暫時(shí)不需要的
// email.setSSLOnConnect(true);
// 發(fā)送
email.send();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("發(fā)送時(shí)間:" + 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();
}
}
}
測(cè)試main方法:
package com.yqx.emaildemo.demo;
import org.apache.commons.mail.EmailAttachment;
import java.util.ArrayList;
import java.util.List;
/**
* 測(cè)試:發(fā)送郵件 (先new出郵件實(shí)體類,賦值之后,再利用工具類方法進(jìn)行發(fā)送操作)
* <p>
* 注重點(diǎn):
* 1) 郵箱需要開啟POP3/SMTP服務(wù)
* 2) 使用的郵箱密碼不是登錄時(shí)的密碼,而是開啟以上服務(wù)之后的授權(quán)碼
* 3) 郵箱地址必須是正確存在的,否則將會(huì)被退信處理
* </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("這是一個(gè)測(cè)試的附件.txt");
// 多個(gè)附件
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>這是一段測(cè)試的內(nèi)容~</h2>");
// 調(diào)用工具類方法進(jìn)行發(fā)送
MailUtil.sendMail(mailInfo);
}
}
我覺得注釋應(yīng)該寫得很清楚了吧,這是作為一個(gè)demo來寫的,分享一下,在寫的時(shí)候一直遇到找不到地址之類的,或者服務(wù)沒開之類的報(bào)錯(cuò),這里都寫了注重點(diǎn)的東西,這是第一次在代碼里面一直寫很多注釋。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java工具類SendEmailUtil實(shí)現(xiàn)發(fā)送郵件
- Android使用Javamail發(fā)送Email群發(fā)加附件
- java發(fā)送email一般步驟(實(shí)例講解)
- SSH框架網(wǎng)上商城項(xiàng)目第25戰(zhàn)之使用java email給用戶發(fā)送郵件
- Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼
- java.mail實(shí)現(xiàn)發(fā)送郵件
- Java通過stmp協(xié)議發(fā)送郵件
- Java通過exchange協(xié)議發(fā)送郵件
- 淺析JavaMail發(fā)送郵件后再通過JavaMail接收格式問題
- Spring框架JavaMailSender發(fā)送郵件工具類詳解
- SpringBoot JavaMailSender發(fā)送郵件功能
相關(guān)文章
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之線上水果超市商城的實(shí)現(xiàn)
這是一個(gè)使用了java+SSM+springboot+redis開發(fā)的網(wǎng)上水果超市商城,是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有水果超市商城該有的所有功能,感興趣的朋友快來看看吧2022-01-01
Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法
這篇文章主要介紹了Mybatis-Plus使用p6spy對(duì)SQL性能進(jìn)行監(jiān)控的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Java將json對(duì)象轉(zhuǎn)換為map鍵值對(duì)案例詳解
這篇文章主要介紹了Java將json對(duì)象轉(zhuǎn)換為map鍵值對(duì)案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
Spring boot + thymeleaf 后端直接給onclick函數(shù)賦值的實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring boot + thymeleaf 后端直接給onclick函數(shù)賦值的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-06-06
SpringBoot2.0 整合 Dubbo框架實(shí)現(xiàn)RPC服務(wù)遠(yuǎn)程調(diào)用方法
這篇文章主要介紹了SpringBoot2.0 整合 Dubbo框架 實(shí)現(xiàn)RPC服務(wù)遠(yuǎn)程調(diào)用 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
分享Java8中通過Stream對(duì)列表進(jìn)行去重的實(shí)現(xiàn)
本文主要介紹了分享Java8中通過Stream對(duì)列表進(jìn)行去重的實(shí)現(xiàn),包括兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

