java實(shí)現(xiàn)發(fā)送email小案例
這是一個小的發(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();
}
}
}
測試main方法:
package com.yqx.emaildemo.demo;
import org.apache.commons.mail.EmailAttachment;
import java.util.ArrayList;
import java.util.List;
/**
* 測試:發(fā)送郵件 (先new出郵件實(shí)體類,賦值之后,再利用工具類方法進(jìn)行發(fā)送操作)
* <p>
* 注重點(diǎn):
* 1) 郵箱需要開啟POP3/SMTP服務(wù)
* 2) 使用的郵箱密碼不是登錄時(shí)的密碼,而是開啟以上服務(wù)之后的授權(quán)碼
* 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)用工具類方法進(jìn)行發(fā)送
MailUtil.sendMail(mailInfo);
}
}
我覺得注釋應(yīng)該寫得很清楚了吧,這是作為一個demo來寫的,分享一下,在寫的時(shí)候一直遇到找不到地址之類的,或者服務(wù)沒開之類的報(bào)錯,這里都寫了注重點(diǎn)的東西,這是第一次在代碼里面一直寫很多注釋。
以上就是本文的全部內(nèi)容,希望對大家的學(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ā)送的簡單實(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)文章
SpringMvc/SpringBoot HTTP通信加解密的實(shí)現(xiàn)
這篇文章主要介紹了SpringMvc/SpringBoot HTTP通信加解密的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收的詳細(xì)步驟
這篇文章主要介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
Java高效提取PDF文件指定坐標(biāo)的文本內(nèi)容實(shí)戰(zhàn)代碼
在日常工作中,有時(shí)可能會需要從龐大的PDF文檔中提取其中所包含的文本內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于如何利用Java高效提取PDF文件指定坐標(biāo)的文本內(nèi)容,需要的朋友可以參考下2024-01-01
java swing實(shí)現(xiàn)簡單的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了java swing實(shí)現(xiàn)簡單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03

