傳送郵件工具類EmailKit
阿新 • • 發佈:2019-02-09
一、到相關郵箱伺服器開通smtp等功能
二、程式碼編寫
import java.util.Date;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress ;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
public class EmailKit {
/**
* FIXME smtp地址需改成配置項,郵件正文程式碼略微複雜應可簡化
* @param toEmail 目標郵箱
* @param title 郵件主題
* @param content 郵件內容
*/
public static boolean send(String toEmail, String title, String content) {
boolean flag = true;
try {
Prop emailProp = PropKit.use("email.properties");
String fromEmail = emailProp.get("fromEmail");
Properties props = new Properties();
props.put ("mail.smtp.host", emailProp.get("smtpHost"));
props.put("mail.smtp.auth", "true"); // 這樣才能通過驗證
//ssl 驗證 部分非企業郵箱
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
Session s = Session.getInstance(props);
s.setDebug(true);
MimeMessage message = new MimeMessage(s);
// 給訊息物件設定發件人/收件人/主題/發信時間
InternetAddress from = new InternetAddress(fromEmail); // 發郵件的出發地(發件人的信箱)
message.setFrom(from);
InternetAddress to = new InternetAddress(toEmail);// 發郵件的目的地(收件人信箱)
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject(title);
message.setSentDate(new Date());
// 給訊息物件設定內容
BodyPart mdp = new MimeBodyPart();// 新建一個存放信件內容的BodyPart物件
mdp.setContent(content, "text/html;charset=gb2312");// 給BodyPart物件設定內容和格式/編碼方式
Multipart mm = new MimeMultipart();// 新建一個MimeMultipart物件用來存放BodyPart物件(事實上可以存放多個)
mm.addBodyPart(mdp);// 將BodyPart加入到MimeMultipart物件中(可以加入多個BodyPart)
message.setContent(mm);// 把mm作為訊息物件的內容
message.saveChanges();
Transport transport = s.getTransport("smtp");
transport.connect(emailProp.get("smtpHost"), fromEmail, emailProp.get("fromPassword"));
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
flag = false;
}
return flag;
}
}