applicationContext.xml:
<bean name="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<bean id="mailSender" 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>
<!--
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
-->
</props>
</property>
</bean>
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" scope="prototype" >
<property name="from">
<value>${mail.default.from}</value>
</property>
</bean>
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<props>
<prop key="resource.loader">class</prop>
<prop key="class.resource.loader.class">
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</prop>
<prop key="velocimacro.library"></prop>
</props>
</property>
</bean>
<bean id="mailsenderService" class="com.gewb.service.MailSenderService">
<property name="mailSender" ref="mailSender" />
<property name="simpleMailMessage" ref="simpleMailMessage" />
<property name="velocityEngine" ref="velocityEngine" />
</bean>
mail.properties:
mail.host=smtp.mail.aliyun.com
mail.port=25
mail.username=raymond@aliyun.com
mail.password=*****
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.default.from=raymond@aliyun.com
MailTest.java:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");
MailSenderService mailSender = (MailSenderService) context.getBean("mailsenderService");
// MailSenderService mailSender=this.getMailsenderService();
mailSender.setTo("raymond@aliyun.com");
mailSender.setSubject("来自gewb的测试邮件"); //邮件主题
mailSender.setTemplateName("mail.vm");//引用模板名
Map model=new HashMap();
// model.put("username", form.getUserName());
model.put("username", "raymond@aliyun.com");
// String url=request.getRequestURL().toString();
// url=url.substring(0, url.lastIndexOf("/"));
// model.put("url", url);
model.put("email", "raymond_ge2004@aliyun.com");
mailSender.sendWithTemplate(model);
System.out.println("邮件发送成功!");
}
mail.vm
亲爱的${username}
欢迎加入!
当您收到这封信的时候,您已经可以正常登录了。
请点击链接登录首页:${url}
如果您的email程序不支持链接点击,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入。
如果您还想申请管理员权限,可以联系管理员${email}
我们对您产生的不便,深表歉意。
希望您在这里度过快乐的时光!
-----------------------
(这是一封自动产生的email,请勿回复。)
还有一个关键类
MailSenderService.java
private JavaMailSender mailSender;//spring配置中定义
private VelocityEngine velocityEngine;//spring配置中定义
private SimpleMailMessage simpleMailMessage;//spring配置中定义
private String from;
private String to;
private String subject;
private String content;
private String templateName;
// 是否需要身份验证
private boolean validate = false;
public JavaMailSender getMailSender() {
return mailSender;
}
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public VelocityEngine getVelocityEngine() {
return velocityEngine;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
this.velocityEngine = velocityEngine;
}
/**
* 发送模板邮件
*
*/
public void sendWithTemplate(Map model){
mailSender = this.getMailSender();
simpleMailMessage.setTo(this.getTo()); //接收人
simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //发送人,从配置文件中取得
simpleMailMessage.setSubject(this.getSubject());
String result = null;
try {
result = VelocityEngineUtils.mergeTemplateIntoString(this.getVelocityEngine(), this.getTemplateName(), "UTF-8",model);
} catch (Exception e) {}
simpleMailMessage.setText(result);
mailSender.send(simpleMailMessage);
}
/**
* 发送普通文本邮件
*
*/
public void sendText(){
mailSender = this.getMailSender();
simpleMailMessage.setTo(this.getTo()); //接收人
simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //发送人,从配置文件中取得
simpleMailMessage.setSubject(this.getSubject());
simpleMailMessage.setText(this.getContent());
mailSender.send(simpleMailMessage);
}
/**
* 发送普通Html邮件
*
*/
public void sendHtml(){
mailSender = this.getMailSender();
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
try {
messageHelper.setTo(this.getTo());
messageHelper.setFrom(simpleMailMessage.getFrom());
messageHelper.setSubject(this.getSubject());
messageHelper.setText(this.getContent(),true);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mailSender.send(mimeMessage);
}
/**
* 发送普通带一张图片的Html邮件
*
*/
public void sendHtmlWithImage(String imagePath){
mailSender = this.getMailSender();
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
messageHelper.setTo(this.getTo());
messageHelper.setFrom(simpleMailMessage.getFrom());
messageHelper.setSubject(this.getSubject());
messageHelper.setText(this.getContent(),true);
// Content="<html><head></head><body><img src=\"cid:image\"/></body></html>";
//图片必须这样子:<img src='cid:image'/>
FileSystemResource img = new FileSystemResource(new File(imagePath));
messageHelper.addInline("image",img);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mailSender.send(mimeMessage);
}
/**
* 发送普通带附件的Html邮件
*
*/
public void sendHtmlWithAttachment(String filePath){
mailSender = this.getMailSender();
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
messageHelper.setTo(this.getTo());
messageHelper.setFrom(simpleMailMessage.getFrom());
messageHelper.setSubject(this.getSubject());
messageHelper.setText(this.getContent(),true);
FileSystemResource file = new FileSystemResource(new File(filePath));
// System.out.println("file.getFilename==="+file.getFilename());
messageHelper.addAttachment(file.getFilename(),file);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mailSender.send(mimeMessage);
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public SimpleMailMessage getSimpleMailMessage() {
return simpleMailMessage;
}
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
this.simpleMailMessage = simpleMailMessage;
}