一个Web 系统通常会少不了邮件服务的,比如用于注册,密码找回,订单提醒等应用场景。spring 封装了一个简单易用的关于邮件发送的工具类JavaMailSenderImpl 。
系统要提供邮件服务,那得需要一个邮件服务器,用于发送和回复邮件。如果有条件专门弄一个邮件服务器那固然是最好的,但是也可以简单的使用163或者qq提供的邮件服务。
例如注册了一个example@163.com的邮箱账号,在网站上选设置 然后勾选 POP3/SMTP服务,然后保存。点击左侧导航栏中的 客户端授权密码 ,开启客户端授权码,重置授权码,你会收到一个授权码的短信,这个授权码就是用来第三方客户端登录的密码
要做四件事
1:设置邮件服务器有公司的就使用公司的,没有公司的就使用163或者qq提供的邮件服务
2:引入需要的夹包
3:配置需要的配置文件
4:写测试类测试
一:设置邮件服务器有公司的就使用公司的,没有公司的就使用163或者qq提供的邮件服务 ,这里用网易举例
二。首先需要的夹包
spring-context-support-3.2.3.RELEASE.jar
mail-1.4.7.jar
三。需要的配置文件---在applicationContext.xml中配置
<!-- 使用Spring封装的Mail Sender发送邮件 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.163.com"/> <!-- 发送方的服务器 网易提供的,这里是定死的 -->
<!-- <property name="host" value="smtp.qq.com"/> --><!-- 发送方的服务器 腾讯qq提供的 -->
<property name="port"><!-- 发送方服务器对应的端口,默认的25 -->
<value>25</value>
</property>
<property name="username" value="136....3261@163.com"/><!-- 发送方服务器对应的邮箱账号 ,你自己的网易邮箱,发邮件就是从这个设定的邮箱向外发送-->
<property name="password" value="------------"/><!-- 发送方服务器对应的邮箱密码,勾选 POP3/SMTP服务后的授权码 -->
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop><!-- 是否验证密码 ,true代表验证-->
</props>
</property>
</bean>
四。写方法测试
首先是service
====================开始=============================================
@Service
public class MaileServiceimpl {
@Autowired
private JavaMailSender mailSender;
/*
* 单一发送
* mailTo:收件人的邮箱
* subject:邮件表头信息
* mailBody:邮件内容
* isHtml:true标识设定html格式
*/
public void sendMail(String mailTo, String subject, String mailBody,boolean isHtml) {
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, "utf-8");
try {
messageHelper.setTo(mailTo);
messageHelper.setSubject(subject);
messageHelper.setText(mailBody, isHtml);
messageHelper.setFrom("13671183261@163.com");//发件邮箱,要和配置文件中的一样
mailSender.send(mailMessage);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 批量发送
*/
public void sendMailToMany(String[] mailTo, String subject, String mailBody,boolean isHtml) {
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, "utf-8");
try {
messageHelper.setTo(mailTo);
messageHelper.setSubject(subject);
messageHelper.setText(mailBody, isHtml);
messageHelper.setFrom("1228870598@qq.com");//发件邮箱要和配置文件中的一样
mailSender.send(mailMessage);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
====================结束===================
然后是controller
====================开始===================
@RequestMapping(value="/sendemail",
produces="application/json;charset=utf-8")
@ResponseBody
public String sendEmail(){
//收件人邮箱
String mailTo="1228870598@qq.com";
//邮件表头信息
String subject = "测试发送邮件";
//邮件内容
String mailBody = "蓝星好久不见!";
//true
boolean isHtml = true;
maileService.sendMail(mailTo, subject, mailBody, isHtml);
System.out.println("发送成功!!!!!!!!");
return "true";
}
====================结束==================
本框架使用的是spring+mybatis+springMVC
只是发送普通的文本邮件
http://docs.spring.io/spring/docs/2.0.x/javadoc-api/org/springframework/mail/javamail/MimeMessageHelper.html#setSubject(java.lang.String)