1.配置bean
import java.util.Properties;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.ui.velocity.VelocityEngineFactoryBean;
@Configuration
@ComponentScan("com.zhaowq")
@PropertySource("classpath:config.properties")
public class MailConfig {
@Bean
public JavaMailSenderImpl mailSender(Environment env) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(env.getProperty("mailserver.host"));
mailSender.setPort(Integer.parseInt(env.getProperty("mailserver.port")));
mailSender.setUsername(env.getProperty("mailserver.username"));
mailSender.setPassword(env.getProperty("mailserver.password"));
mailSender.setProtocol("smtp");
Properties prop = new Properties();
**prop.setProperty("mail.smtp.auth", "true");**
mailSender.setJavaMailProperties(prop);
return mailSender;
}
@Bean
public VelocityEngineFactoryBean velocityEngine() {
VelocityEngineFactoryBean velocityEngine = new VelocityEngineFactoryBean();
Properties properties = new Properties();
properties.setProperty("resource.loader", "class");
properties.setProperty("class.resource.loader.class", ClasspathResourceLoader.class.getName());
velocityEngine.setVelocityProperties(properties);
return velocityEngine;
}
}
2.装配和使用邮件发送器
import java.util.HashMap;
import java.util.Map;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.velocity.VelocityEngineUtils;
import com.zhaowq.spring.service.MailService;
@Service
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
@Autowired
private VelocityEngine velocityEngine;
@Override
public void findPassword(String userName, String password, String email) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("userName", userName);
model.put("password", password);
String emailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "emailTemplate.vm", "UTF-8", model);
MimeMessage msg = mailSender.createMimeMessage();
MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(msg, true, "UTF-8");
helper.setFrom("myemail@163.com");
helper.setTo(email);
helper.setSubject("Find password");
helper.setText(emailText, true);
mailSender.send(msg);
} catch (MessagingException e) {
Exceptions.makeThrow(ErrorConstants.EMAIL_SEND_FAIL);
}
}
}
该段代码使用了Velocity构建了邮件模板,emailTemplate.vm代码如下:
<html>
<body>
亲爱的${userName}:<br><br>
您的密码信息已重置:<br><br>
登录名:${userName}<br><br>
新密码:${password}<br><br>
建议你收到邮件后尽快修改密码<br><br>
</body>
</html>
本文介绍了如何在Spring框架中配置邮件服务,并通过Velocity模板引擎生成邮件内容。具体包括配置JavaMailSenderImpl来发送邮件、设置邮件服务器参数、定义邮件模板等步骤。
1795

被折叠的 条评论
为什么被折叠?



