生活随笔
收集整理的這篇文章主要介紹了
ssm实现发送邮件功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SSM實現發送郵件
項目需求
用戶注冊時輸入自己的郵箱地址(這里以QQ郵箱為例),用戶提交訂單,管理員操作訂單,訂單審核通過時給用戶發送郵件提醒用戶,審核成功請盡快付款。
前期工作
導入發送郵件功能相關jar包
配置郵件服務器信息
先在郵箱中設置開啟smtp和pop3服務然后拿到授權碼:
以QQ郵箱服務為例
設置->賬戶
配置文件及代碼
寫mail.properties配置文件
mail.smtp.host=smtp.qq.com
mail.smtp.username=**********@qq.com
mail.smtp.password=***********
mail.smtp.defaultEncoding=utf
-8
mail.smtp.auth=true
mail.smtp.timeout=20000
配置spring-mybatis.xml。在配置文件中導入properties文件的屬性:
<context:property-placeholder location="classpath:config/mail.properties" ignore-unresolvable="true"/>
其中ignore-unresolvable="true"屬性是配置文件中存在多個property-placeholder時出現解析不了的占位符進行忽略掉。這里我們不設置,因為一旦設置mail.properties中的占位符就無法解析,會被忽略掉。
比如
接著在spring-mybatis.xml中配置一個bean
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="${mail.smtp.host}"/><property name="username" value="${mail.smtp.username}"/><property name="password" value="${mail.smtp.password}"/><property name="defaultEncoding" value="${mail.smtp.defaultEncoding}"/><property name="javaMailProperties"><props><prop key="mail.smtp.auth">${mail.smtp.auth}
</prop><prop key="mail.smtp.timeout">${mail.smtp.timeout}
</prop></props></property>
</bean>
Controller測試
@Autowiredprivate JavaMailSender javaMailSender
;MimeMessage mMessage
=javaMailSender
.createMimeMessage();MimeMessageHelper mMessageHelper
;Properties prop
= new Properties();String from
;try {prop
.load(this.getClass().getResourceAsStream("/db.properties"));from
= prop
.get("mail.smtp.username")+"";mMessageHelper
=new MimeMessageHelper(mMessage
,true);mMessageHelper
.setFrom(from
);mMessageHelper
.setTo(email
);mMessageHelper
.setSubject("藥店通知");mMessageHelper
.setText("<p>您的處方訂單已經通過審核,請及時前往付款</p><br/>" +"<a href='http://49.233.250.224:8080/yaodian/login/'>登錄網上藥店</a><br/>",true);javaMailSender
.send(mMessage
);} catch (MessagingException e
) {e
.printStackTrace();} catch (IOException e
) {e
.printStackTrace();}
本地測試輸入url,成功收到郵件!
項目部署
當項目部署到云服務器上運行時會出現運行超時的錯誤
!!!!因為發送郵件的服務默認的是使用25端口,但是不管是阿里云還是騰訊云都把25端口禁用了原因是怕郵件泛濫
所以我特地去我的騰訊云找到25端口解封,但是還是有類似的信息提示
阿里云也是類似的
或者使用SSL協議發送郵件,使用服務器會使用465端口來發送郵件,而不是被阿里云服務器禁用的25端口。
不用SSL協議的話,一般解開25端口就可以使用
如果還不行可能是因為Linux無法解析域名
將我們的服務器主機名寫成IP地址的形式
mail.smtp.host=smtp.qq.com
這樣發送郵件的功能就已經能夠成功實現了
總結
以上是生活随笔為你收集整理的ssm实现发送邮件功能的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。