文章所用jar文件
鏈接:https://pan.baidu.com/s/1YaxhdkaCTC4TUDL-y9-ASQ
提取碼:30ow
程序入口,發送工具類
package test;
import org.apache.commons.mail.EmailException;
/**
* 郵箱發送工具類
* @author Administrator
*
*/
public class EmailUtil {
public static void main(String[] args) throws EmailException {
//自定義工具類
EmailUtils EmailUtils = new EmailUtils();
//返回0表示發送失敗 返回1表示發送成功
int o = EmailUtils.sendSimpleEmail("123465@qq.com", "名稱", "Java send Email", "測試");
if(o==0){
System.out.println("發送失敗");
}else{
System.out.println("發送成功");
}
}
}
發送簡單郵件方法類
package test;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class EmailUtils{
/**
* 發送簡單郵件方法
* @param emailAddress
* 發送地址
* @param sendName
* 發件人名
* @param title
* 郵件標題
* @param message
* 郵件內容
* @return
* 返回0表示發送失敗 返回1表示發送成功
* @throws EmailException
*/
public int sendSimpleEmail(String emailAddress, String sendName, String title, String message) throws EmailException{
//要發送的服務器 地址
String hostName="smtp.qq.com";//對方郵箱是什么類型,這里是QQ郵箱的服務器地址
//要發送的服務器 郵箱賬號
String userName="自己的郵箱地址";
//要發送的服務器 郵箱密碼
String password="自己的郵箱密碼";
//要發送的端口 587 465 25
int smtpPort=587;
//是否使用ssl加密協議
boolean SSL=true;
try {
SimpleEmail email = new SimpleEmail();
//smtp address
email.setHostName(hostName);
//smtp port
email.setSmtpPort(smtpPort);
//賬號 密碼
email.setAuthenticator(new DefaultAuthenticator(userName, password));
//設置發件人地址
email.setFrom(userName);
//設置郵件標題
email.setSubject(title);
//設置郵件主體
//email.setMsg(message);
email.setContent(message, "text/html;charset=UTF-8");//解決亂碼
//設置收件人地址
email.addTo(emailAddress);
//設置是否使用SSL加密
email.setSSL(SSL);
//發送郵件
email.send();
} catch (Exception e) {
//異常
return 0;
}
//正常
return 1;
}
}
郵件發送控制器
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SendEmailServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 前端form表單post請求--防止請求提交亂碼.
request.setCharacterEncoding("utf-8");
// 獲取前端傳入的參數
try {
// 郵件發送處理
SendEmailUtil.sendMail("2249119735@qq.com", "郵件測試");
// 將發送信息保存到session中
request.getSession().setAttribute("send_msg", "郵件發送成功!");
// 頁面跳轉到發送結果頁面
request.getRequestDispatcher("/index.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.getSession().setAttribute("send_msg", "郵件發送失敗!");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
核心發送方法
package test;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmailUtil {
public static boolean sendMail(String emailAddress, String emailMsg) {
// 誰發送
String from = "1535765656@qq.com";
// 發給誰
String to = emailAddress;
// 發送者的用戶名和密碼(郵箱登錄用)
final String username = "1535765656@qq.com"; // 此處填寫發送的郵箱名
final String password = "ypvjnbyqelcsihag"; // 此處填寫登錄的郵箱密碼
// 定義properties對象,設置環境信息
Properties properties = new Properties();
/*
* mail.smtp.host :指定連接的郵件服務器的主機名。如:163郵箱就填寫smtp.163.com
* 若在本地測試的話,需要在本地安裝smtp服務器
*/
properties.setProperty("mail.smtp.host", "smtp.qq.com");
// mail.smtp.auth:指定客戶端是否要向郵件服務器提交驗證
properties.setProperty("mail.smtp.auth", "true");
/*
* mail.transport.protocol:指定郵件發送協議:smtp。smtp:發郵件;pop3:收郵件
* mail.store.protocol:指定郵件接收協議
*/
properties.setProperty("mail.transport.protocol", "smtp");
// 獲取session對象
Session session = Session.getInstance(properties);
// 當設置為true,JavaMail AP就會將其運行過程和郵件服務器的交互命令信息輸出到console中,用于JavaMail的調試
session.setDebug(true);
try {
// 創建郵件對象
MimeMessage message = new MimeMessage(session);
// 設置郵件發送方
message.setFrom(new InternetAddress(from));
// 設置郵件發送的主題
message.setSubject("郵件發送設置");
// 設置郵件發送的內容
message.setContent(emailMsg,"text/html;charset=utf-8");
Transport transport=session.getTransport();
// 連接郵件服務器,“”中填寫郵件服務器主機名
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
transport.connect("smtp.qq.com",465, username, password);
transport.sendMessage(message,new Address[]{new InternetAddress(to)});
transport.close();
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
}