日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java velocity 邮件_邮件集成java mail + 读取邮件模板

發(fā)布時間:2025/3/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java velocity 邮件_邮件集成java mail + 读取邮件模板 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

項目做異地登錄提醒功能,通過java mail發(fā)送郵件。讀取郵件模板sendMail.vm文件。

1.郵件發(fā)送

import java.io.StringWriter;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

import org.apache.velocity.Template;

import org.apache.velocity.VelocityContext;

import org.apache.velocity.app.Velocity;

import org.apache.velocity.app.VelocityEngine;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.scheduling.annotation.Async;

public class SendMailSenderServiceImpl implements IMailSenderService {

private static final Logger LOG = LoggerFactory.getLogger(SendMailSenderServiceImpl.class);

private String mailTitle;

private String mailContent;

private String smptHost;

private String mailServicePwd;

private String mailServiceUser;

private String sendMail;

private String transProtocol;

private String port;

private String auth;

@Async

public void sendMail(String address, String username, String date, String place) {

if(address.isEmpty()) {

LOG.debug("{} not bind email.",username);

return;

}

Properties props = new Properties();

props.setProperty("mail.smtp.host", smptHost);

props.setProperty("mail.transport.protocol", transProtocol);

props.setProperty("mail.smtp.auth", auth);

props.setProperty("mail.smtp.port", port);

Session session = Session.getInstance(props);

Message message = new MimeMessage(session);

try {

message.setFrom(new InternetAddress(sendMail));

message.setRecipient(RecipientType.TO, new InternetAddress(address));

message.setSubject(mailTitle);

message.setContent(getMailContent(mailContent, username, date, place), "text/html;charset=utf-8");

Transport transport = session.getTransport();

transport.connect(smptHost, mailServiceUser, mailServicePwd);

transport.sendMessage(message, message.getAllRecipients());

} catch (Exception e) {

LOG.error("Send mail failed.{}", e);

}

}

使用@Async做異步的調(diào)用,避免調(diào)用發(fā)送郵件的功能時阻塞服務(wù)的運行。

mail.smtp.host授權(quán)的郵件平臺:smtp.163.com

mail.transport.protocol 郵件傳輸協(xié)議:smtp

mail.smtp.auth 當(dāng)前值默認為false,為false時可以不使用發(fā)件郵箱和密碼,設(shè)置為null。設(shè)置為true則必須校驗用戶名和密碼。

mail.smtp.port 郵件服務(wù)端口

mailtitle和mailcontent模板通過xml注入到bean中,記得寫set方法,直接使用的properties中的內(nèi)容。

這里因為引用的sendMail.vm文件的模板內(nèi)容,所以需要去將模板內(nèi)容讀取出來。

模板內(nèi)容很簡單,需要使用html語法來操作換行和樣式:

尊敬的用戶:

${name},您好!

您的用戶帳號${name}于${date},在${place}進行登錄,存在異地登錄行為。請確保是本人操作。

系統(tǒng)郵件自動發(fā)送,請勿回復(fù)!

讀取模板內(nèi)容通過調(diào)用方法:

public String getMailContent(String mailContent, String name, String date, String place) {

StringWriter stringWriter = new StringWriter(); // velocity引擎

VelocityEngine velocityEngine = new VelocityEngine(); // 設(shè)置文件路徑屬性

Properties properties = new Properties();

String dir = SendMailSenderServiceImpl.class.getResource("/").getPath();

properties.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, dir); // 引擎初始化屬性配置

try {

velocityEngine.init(properties); // 加載指定模版

Template template = velocityEngine.getTemplate(mailContent, "utf-8"); // 填充模板內(nèi)容

VelocityContext velocityContext = new VelocityContext();

velocityContext.put("name", name);

velocityContext.put("date", date);

velocityContext.put("place", place);

template.merge(velocityContext, stringWriter);

return stringWriter.toString();

} catch (Exception e) {

LOG.error("Get Mail Content failed.{}", e);

return "fail";

}

}

這里需要注意的就是文件路徑。代碼中的mailContent就是模板文件名sendMail.vm。再就是模板存放的位置,我的存放在classes下面。如果讀取不到,就要debug看一下是不是模板放錯位置了。

這只是簡單的發(fā)送簡單的格式的郵件的簡單代碼實現(xiàn)。

總結(jié)

以上是生活随笔為你收集整理的java velocity 邮件_邮件集成java mail + 读取邮件模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性一交一乱一色一免费无遮挡 | 99婷婷| 欧美特级黄色片 | 吃瓜网今日吃瓜 热门大瓜 色婷在线 | 一本到av | 日韩福利视频网 | 国产欧美日韩成人 | 女女高潮h冰块play失禁百合 | 中文字幕av一区二区 | 中文字幕视频网站 | 亚洲激情视频一区 | 在线观看高清视频 | 干成人网 | 丰满岳跪趴高撅肥臀尤物在线观看 | 爱爱动态图 | 欧美综合自拍亚洲综合图片区 | 国内一区二区视频 | 国产精品羞羞答答在线观看 | 日批免费观看 | 一级片在线观看视频 | 中文字幕一区二区三区乱码人妻 | 激情小视频在线观看 | 亚洲色成人www永久网站 | 90岁老太婆乱淫 | 一区成人 | 小泽玛丽亚在线观看 | 日本网站免费 | 久久黄色| 性猛交ⅹxxx富婆video | 亚洲亚洲人成综合网络 | 欧洲黄色录像 | 一区二区三区av夏目彩春 | 日本视频在线免费 | 中文字幕色网 | 丰满少妇xbxb毛片日本 | 一区二区三区日韩精品 | 婷婷久久久久久 | 日本高清一区二区视频 | 丝袜理论片在线观看 | 超碰免费97 | 波多野结衣视频网站 | 天堂久久一区 | 久久精品免费av | 草草影院发布页 | 182在线视频| 日本一区视频 | 三级在线观看网站 | 午夜视频在线免费播放 | 成人免费av在线 | 色一区二区三区 | 中文字幕在线网站 | 欧美精品成人在线 | 久久久久久国产精品免费免费 | 国产精品无码成人片 | 天堂资源 | 精品欧美一区二区三区久久久 | 91一区二区国产 | 精精国产xxxx视频在线 | 国产一区二区在线免费观看视频 | 欧美aaaaaaaaaa | 日本理论片中文字幕 | 亚州一区二区 | 国产模特av私拍大尺度 | 在线观看中文字幕视频 | www.com日本| 国产白浆一区二区 | 欧美肉丝袜videos办公室 | 看一级黄色 | 亚洲午夜久久 | 96精品| 欧美在线视频a | 抽插丰满内射高潮视频 | 国产高清色 | 三级不卡视频 | 8090理论片午夜理伦片 | 亚洲色图欧美自拍 | 激情文学亚洲 | 国产亚洲精品久 | 欧美色图国产精品 | 久久久精品动漫 | 免费在线一级片 | 成人久久久久 | 国产一区二区三区四区三区四 | 啪视频在线观看 | 日本一道本在线 | 波多野吉衣一二三区乱码 | 玖玖精品在线视频 | 国产艳情片| 伊人黄色| 日韩黄色小视频 | 亚洲精品电影在线观看 | 亚洲av成人片无码 | 免费国产一区二区 | 成人免费毛片男人用品 | 久久天天综合 | 中文字幕第页 | 亚洲欧美日韩不卡 | 老司机在线看片 | 欧美日韩中文在线 |