最近一直在做邮箱校验用户 信息的问题 , 项目使用SSH框架 利用MVC思想:
先介绍一下采用spring mail的好处吧,Spring 提供了一个发送电子邮件的高级抽象层,它向用户屏蔽了底层邮件系统的一些细节,同时负责低层次的代表客户端的资源处理。所以用 Spring 来发送 email 会省事很多和让发邮件变的简单许多,可以让我们更专注邮件内容本身而不必理会底层的具体实现。Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender(实现类为org.springframework.mail.javamail.JavaMailSenderImpl,下面会用到改实现类)和封装了简单邮件属性的值对象SimpleMailMessage。
下面会具体介绍spring mail实现过程:
一 导入相关的依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
二 获取校验码信息
(1) 控制器strusts 调用方法
<bean id="sendMailAction" class="com.xunwei.sbms.controller.MailAction" scope="request">
<property name="mailSend" ref="mailUtil"></property>
</bean>
(2) 邮件发生器
<bean id="mailUtil" class="com.xunwei.sbms.service.impl.MailService">
<property name="mailSender" ref="mailSender"></property>
<property name="simpleMailMessage" ref="simpleMailMessage"></property>
</bean>
<!-- 邮件发送器 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.sina.cn" />
<property name="username" value="[email protected]" />
<property name="password" value="123" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
<prop key="mail.smtp.port">25</prop>
</props>
</property>
</bean>
(3)设置发件人
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<!-- 发件人email -->
<property name="from" value="[email protected]" />
</bean>
三 邮件发送类
String mail = request.getParameter("sendMail");
StringBuffer randomCode = getExchangeCode();
String content = "尊敬的" + mail + "您好\n" + "您的验证码为:" + randomCode + "\n" + "请及时拷贝使用!";
session.setAttribute("verifyMail", randomCode);
try
{
mailSend.send(mail, "密码重置邮件--迅微科技", content);
ret.setCode(0);
ret.setMessage("邮件发送成功");
} catch (Exception e)
{
ret.setCode(-1);
ret.setMessage("邮件发送失败");
}
4 校验
String mail = request.getParameter("sendMail");
String exponent_privateKey = session.getAttribute("exponent_privateKey").toString();
String modulus_privateKey = session.getAttribute("modulus_privateKey").toString();
String verify = RsaUtil.decryptByExpAndModOfPrivateKey(mail, exponent_privateKey, modulus_privateKey);
String verifyMail = session.getAttribute("verifyMail").toString();
if (verify.equals(verifyMail))
{
ret.setCode(0);
ret.setMessage("邮件校验码正确");
} else
{
ret.setCode(-1);
ret.setMessage("邮件校验码错误");
}