因项目需求,需要邮箱找回密码功能,正好springmvc中有个JavaMailSenderImpl类,使用它来完成此功能
1、导入所需jar包
mail.jar 和 spring-context-support-4.0.0.jar
2、在配置文件中配置JavaMailSenderImpl类的bean
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com"></property>
<property name="port" value="25"></property>
<property name="username" value="123456@qq.com"></property>
<property name="password" value="******"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.from">123456@qq.com</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<!-- <prop key="mail.debug">true</prop> -->
</props>
</property>
</bean>
3、注入bean
在需要处理发送邮件的类中使用
@Resource
private JavaMailSenderImpl mailSender;
注入发送邮件的bean
主要代码如下:
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
//设置发件人/收件人信息
helper.setFrom(mailSender.getUsername());
helper.setTo(12345678@qq.com);
helper.setSubject("密码重置");
helper.setText("重置密码邮件", true);
mailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
}
大致就需要以上几步,具体的邮件url的生成规则以及url的验证等等,在这里就不细说了,网上也有很多,
个人也可以根据自己项目的特点和需要,自定义url生成规则
下面说下,编码过程遇到的一些问题:
1、本人使用的是qq邮件作为发送方测试的,需要手动开启服务
在邮箱的设置--账户--POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中需要手动开启POP3/SMTP服务
此外,配置文件中的password使用的是授权码,在开启服务的时候会生成
2、还有一个问题就是授权的问题,这个问题花了些时间,开始的时候报授权失败错误,网上查阅,才解决
需要在第二步的配置文件中添加<prop key="mail.smtp.starttls.enable">true</prop>
3、配置文件中的密码,配置的是授权码,用于第三方客户端登录,授权码开启服务时生成或设置
由于本人只测试了qq邮箱作为发送方,因此还有很多问题未涉及,希望大家有好的想法或遇到了问题,都可以随时讨论、学习
让我们一起遨游在代码的海洋里!