剛做完一個電影網站,網站新注冊用戶時需要發送email進行確認。但是這個功能不是由我來負責的。在下對此功能頗有好奇之心於是自己就搭建了一個小的spring項目來進行實踐。
聲明代碼裡有些內容並非是我一個人完成的。
首先在applicationContext.xml文件中配置bean
Java代碼
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.sina.com">
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
<property name="username" value="dufangxu"/>
<property name="password" value="你的郵箱密碼"/>
</bean>
實現發送郵件java類代碼:
Java代碼
private Configuration cfg = new Configuration();
public static void main(String[] args) throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
SpringMail springMail = new SpringMail();
springMail.sendMail(sender);
}
private void sendMail(JavaMailSender sender) throws Exception {
SimpleMailMessage mail = new SimpleMailMessage();
mail.setTo("[email protected]"); //接收人
mail.setFrom("[email protected]"); //發送人
mail.setSubject("test by amigo");
//嵌入ftl模版
cfg.setClassForTemplateLoading(getClass(), "/mail");
Map root = new HashMap();
root.put("username", "sucre"); //模板變量
Template t = cfg.getTemplate("notify-mail.ftl");
StringWriter writer = new StringWriter();
t.process(root, writer);
//把模版內容寫入郵件中
mail.setText(writer.toString());
sender.send(mail);
System.out.println("郵件發送成功!");
}
這樣還不夠,還需要一個ftl模版
Java代碼
歡迎加入!
親愛的${username}
請點擊鏈接完成注冊:
如果您的email程序不支持鏈接點擊,請將上面的地址拷貝至您的浏覽器(如IE)的地址欄進入****。
您可以在***:
查看最新的影視資料,查看各種相關消費產品,在這裡交友,灌水……;
希望您在**度過快樂的時光!
-
(這是一封自動產生的email,請勿回復。)
目錄結構:
ok,這樣郵件就能成功發送了。
文章很簡短,還有很多不足之處,希望大家多提意見