JavaMailによるテンプレートメールの送信と送信ボックスへの保存
8996 ワード
使用するjarパッケージ1.freemarker-2.3.19.jar 2.javax.mail.jar 3.javax.activation.jar
今回のテストメールボックスはテンセント企業のメールボックスで、その他はテストされていません.この機能をするのは私の彼女が毎月すべて手動で数十人の勤務試験、審査のメールを出す必要があるためで、本当に繰り返しすぎて1件のとても退屈な事をして、だからやっとこのプログラムがあって、しかし、インタフェースは使うコンソールで、簡単です.
コアコードディスプレイ
発送箱に保存
テンプレートの内容の取得
テンプレートの内容を置換
HTMLテンプレート(これはやはり景洲が実現してくれた)
今回のテストメールボックスはテンセント企業のメールボックスで、その他はテストされていません.この機能をするのは私の彼女が毎月すべて手動で数十人の勤務試験、審査のメールを出す必要があるためで、本当に繰り返しすぎて1件のとても退屈な事をして、だからやっとこのプログラムがあって、しかし、インタフェースは使うコンソールで、簡単です.
コアコードディスプレイ
/**
*
* @author hezhao
* @Time 2017 3 13 11:25:15
*/
public void send() {
System.out.println(" :::["+to+"] ...");
//
Properties prop = System.getProperties();
prop.put("mail.smtp.host", stmpmailServer);
prop.put("mail.smtp.auth", "true");
prop.put("mail.transport.protocol", this.send);
prop.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
prop.put("mail.smtp.socketFactory.port", this.smtpport);
prop.put("mail.smtp.socketFactory.fallback", "false");
// SSL, !
//
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
} catch (GeneralSecurityException e1) {
e1.printStackTrace();
}
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
// Session
Session session = Session.getDefaultInstance(prop, new Authenticator() {
//
@Override
protected PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication pa = new PasswordAuthentication(username,
password);
return pa;
}
});
// session ,
session.setDebug(true);
try {
// Message
Message message = new MimeMessage(session);
// message.setFrom(new InternetAddress(from,from)); //
//
String nick_from = "";
try {
nick_from = javax.mail.internet.MimeUtility.encodeText(this.nickname_from);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
message.setFrom(new InternetAddress(nick_from + " "));
//
String nick_to = "";
try {
nick_to = javax.mail.internet.MimeUtility.encodeText(this.nickname_to);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
message.setRecipient(Message.RecipientType.TO, new InternetAddress(nick_to + " "));//
message.setSubject(mailSubject);//
message.setContent(mailContent, "text/html;charset=utf8");// ( )
message.setSentDate(new Date());//
//
Transport.send(message);
System.out.println(" ...");
//
saveEmailToSentMailFolder(message);
if(mailSubject.contains(" ")){
FileLog.writeLog(this.nickname_to + " ");
}else{
FileLog.writeLog(this.nickname_to + " ");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(" ...");
if(mailSubject.contains(" ")){
FileLog.writeLog(this.nickname_to + " ");
}else{
FileLog.writeLog(this.nickname_to + " ");
}
}
}
発送箱に保存
/**
*
*
* @param message
*
* @param store
*
* @return
* @throws IOException
* @throws MessagingException
*/
private Folder getSentMailFolder(Message message, Store store)
throws IOException, MessagingException {
//
Properties props = new Properties();
props.setProperty("mail.store.protocol", get);
props.setProperty("mail.imap.host", imapmailServer);
props.setProperty("mail.imap.port", "143");
/** QQ ssl */
props.setProperty("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imap.socketFactory.fallback", "false");
props.setProperty("mail.imap.starttls.enable", "true");
props.setProperty("mail.imap.socketFactory.port", imapport);
// Session
Session session = Session.getInstance(props);
URLName urln = new URLName(get, imapmailServer, 143, null,
username, password);
// IMAP Store
store = session.getStore(urln);
store.connect();
//
Folder folder = store.getFolder("Sent Messages");
//
folder.open(Folder.READ_WRITE);
return folder;
}
/**
*
*
* @param message
*
*/
private void saveEmailToSentMailFolder(Message message) {
Store store = null;
Folder sentFolder = null;
try {
sentFolder = getSentMailFolder(message, store);
message.setFlag(Flag.SEEN, true); //
sentFolder.appendMessages(new Message[] { message });
System.out.println(" ...");
} catch (Exception e) {
e.printStackTrace();
} finally {
//
if (sentFolder != null && sentFolder.isOpen()) {
try {
sentFolder.close(true);
} catch (MessagingException e) {
e.printStackTrace();
}
}
//
if (store != null && store.isConnected()) {
try {
store.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}
テンプレートの内容の取得
/**
*
* @author hezhao
* @Time 2017 3 13 1:01:08
* @param fileName
* @param map
* @return
*/
public String getMailText(String fileName,Map map){
String htmlText = null;
try {
Template template = config.getTemplate(fileName);
htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
return htmlText;
}
テンプレートの内容を置換
FreemarkerUtil freemarkerUtil = null;
try {
freemarkerUtil = (FreemarkerUtil) context.getBean("freemarkerUtil");
} catch (Exception e) {
System.out.println(" !!!");
e.printStackTrace();
}
String mailContent = freemarkerUtil.getMailText(fileName, map);
HTMLテンプレート(これはやはり景洲が実現してくれた)
${title}
${no}
${dept}
${name}
${intotime}
${workday}
${outhour}
${deletemin}
${deletemoney}
${kg}
${year}
${remark}
${bottom}