因項目需求,需要郵箱找回密碼功能,正好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="[email protected]"></property>
<property name="password" value="******"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.from">[email protected]</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([email protected]);
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郵箱作為發送方,是以還有很多問題未涉及,希望大家有好的想法或遇到了問題,都可以随時讨論、學習
讓我們一起遨遊在代碼的海洋裡!