Spring鐨勯偖浠舵湇鍔℃敮鎸佷富瑕佹槸閫氳繃JavaMailSender榪欎釜鎺ュ彛瀹炵幇鐨勶細
public interface JavaMailSender extends MailSender {
MimeMessage createMimeMessage();
MimeMessage createMimeMessage(InputStream contentStream) throws MailException;
void send(MimeMessage mimeMessage) throws MailException;
void send(MimeMessage[] mimeMessages) throws MailException;
void send(MimeMessagePreparator mimeMessagePreparator) throws MailException;
void send(MimeMessagePreparator[] mimeMessagePreparators) throws MailException;
}
榪欐槸JavaMailSender鐨勬帴鍙f簮浠g爜(鍘婚櫎娉ㄩ噴),鍙互鐪嬪埌錛屼富瑕佹彁渚涗簡createMimeMessage鍜宻end涓や釜鏂規硶銆俢reateMimeMessage鏂規硶涓昏鏄敤鏉ュ垱寤篔avaMail鐨凪IME淇′歡錛岃宻end鍒欐槸鍙戦佺數瀛愰偖浠剁殑涓昏鏂規硶銆?br />
Spring涓彁渚涗簡JavaMailSender鐨勭畝鍗曞疄鐜幫細org.springframework.mail.javamail.JavaMailSenderImpl銆傚湪JavaMailSendImpl榪欎釜綾諱腑錛屽疄鐜頒簡JavaMailSender涓畾涔夌殑鏂規硶鐨勫叿浣撳疄鐜般傝屼紬鎵鍛ㄧ煡錛孲pring鏄牳蹇冪殑鍔熻兘鏄疘OC錛屾墍浠ラ氳繃Spring鏉ュ彂閫佺數瀛愰偖浠訛紝灝卞彲浠ヤ嬌鐢⊿pring寮哄ぇ鐨処OC鍔熻兘錛屼笅闈㈠氨鏉ョ湅涓涓嬶紝鎬庝箞鏍峰湪Spring涓彂閫侀偖浠訛細
1. Spring閰嶇疆鏂囦歡錛屼富瑕侀厤緗甿ailSender鍜屽velocity鐨勬敮鎸?br />
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
default-lazy-init="true" default-autowire="byName">
<!-- 灞炴ф枃浠跺姞杞? 鍔犺澆閭歡璁劇疆灞炴ф枃浠?nbsp;-->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<bean id="mailEngine" class="org.example.mailer.MailEngine">
<property name="javaMailSender" ref="javaMailSender" />
<property name="velocityEngine" ref="velocityEngine" />
</bean>
<bean id="velocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="classpath:velocity" />
</bean>
<!-- 閭歡鍙戦佸櫒 -->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
</beans>
鍦ㄨ繖涓厤緗枃浠朵腑錛岄氳繃propertyConfigurer榪欎釜bean鍔犺澆浜嗛偖浠剁殑閰嶇疆鏂囦歡錛歮ail.properties錛岃繖涓枃浠朵富瑕佸畾涔変竴浜涢偖浠舵湇鍔$殑灞炴?浣跨敤鐨勬椂鍊欐牴鎹嚜宸辯殑瑕佹眰榪涜鐩稿簲鐨勯厤緗紝榪欓噷浠?26鐨剆mtp鏈嶅姟涓轟緥):
mail.from=
mail.host=smtp.126.com
mail.username=
mail.password=
mail.smtp.auth=true
mail.smtp.timeout=25000
涓嬮潰鏉ョ湅涓涓?span style="color: #0000ff;">MailEngine鐨勫疄鐜幫細
package org.example.mailer;
import java.util.Map;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.VelocityException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.velocity.VelocityEngineUtils;
public class MailEngine {
protected final Log logger = LogFactory.getLog(getClass());
private JavaMailSender javaMailSender;
private VelocityEngine velocityEngine;
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
this.velocityEngine = velocityEngine;
}
public void sendMailWithVelocity() {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg);
String result = null;
Map model = null;
try {
result = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "sendMail.vm", "UTF-8", model);//UTF-8涓烘ā鏉挎枃浠剁殑瀛楃緙栫爜
helper.setFrom("閭歡鍙戦佽?/span>");
helper.setSubject("嫻嬭瘯Spring閭歡");
helper.setTo("閭歡鎺ユ敹鑰?/span>");
helper.setText(result);
javaMailSender.send(msg);
} catch (VelocityException e) {
e.printStackTrace();
logger.error(e.getMessage());
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean senaMail() {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg);
try {
helper.setFrom("閭歡鍙戦佽?/span>");
helper.setSubject("閭歡鍐呭");
helper.setTo("閭歡鎺ユ敹鑰?/span>");
helper.setText("test spring mailer", true); // 濡傛灉鍙戠殑涓嶆槸html鍐呭鍘繪帀true鍙傛暟
javaMailSender.send(msg);
} catch (MessagingException e) {
// TODO 鑷姩鐢熸垚 catch 鍧?/span>
if (logger.isWarnEnabled()) {
logger.warn("閭歡淇℃伅瀵煎父! 閭歡鏍囬涓? ");
}
return false;
// e.printStackTrace();
} catch (MailException me) {
// TODO: handle exception
if (logger.isWarnEnabled()) {
logger.warn("鍙戦侀偖浠跺け璐? 閭歡鏍囬涓? ");
}
return false;
}
return true;
}
public static void main(String[] args) {
BeanFactory bf = new ClassPathXmlApplicationContext("beans.xml");
MailEngine mailEngine = (MailEngine) bf.getBean("mailEngine");
// mailEngine.senaMail();
mailEngine.sendMailWithVelocity();
}
}
sendMailWithVelocity鏂規硶涓昏鏄嬌鐢╒elocity妯℃澘鏂囦歡鏉ュ彂閫侀偖浠訛紝Velocity妯℃澘鏂囦歡瀹氫箟浜嗛偖浠剁殑鍐呭,妯℃澘鏂囦歡鐨勪綅緗敱resourceLoaderPath鎸囧畾錛屾湰渚嬪垯鍦╟lasspath涓嬬殑velocity涓嬶紝濡傛灉鏄痺eb欏圭洰錛屽垯浣嶄簬/WEB-INF/classes/veloticy/鐩綍涓嬨?br />
鎵цmain鏂規硶錛屽氨鍙互鍙戦侀偖浠朵簡銆?br />

]]>