生活随笔
收集整理的這篇文章主要介紹了
ssm实现发送邮件功能
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SSM實(shí)現(xiàn)發(fā)送郵件
- 項(xiàng)目需求
- 前期工作
- 配置文件及代碼
- 項(xiàng)目部署
項(xiàng)目需求
用戶注冊(cè)時(shí)輸入自己的郵箱地址(這里以QQ郵箱為例),用戶提交訂單,管理員操作訂單,訂單審核通過(guò)時(shí)給用戶發(fā)送郵件提醒用戶,審核成功請(qǐng)盡快付款。
前期工作
導(dǎo)入發(fā)送郵件功能相關(guān)jar包
配置郵件服務(wù)器信息
先在郵箱中設(shè)置開(kāi)啟smtp和pop3服務(wù)然后拿到授權(quán)碼:
以QQ郵箱服務(wù)為例
設(shè)置->賬戶
配置文件及代碼
寫(xiě)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。在配置文件中導(dǎo)入properties文件的屬性:
<context:property-placeholder location="classpath:config/mail.properties" ignore-unresolvable="true"/>
其中ignore-unresolvable="true"屬性是配置文件中存在多個(gè)property-placeholder時(shí)出現(xiàn)解析不了的占位符進(jìn)行忽略掉。這里我們不設(shè)置,因?yàn)橐坏┰O(shè)置mail.properties中的占位符就無(wú)法解析,會(huì)被忽略掉。
比如
接著在spring-mybatis.xml中配置一個(gè)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測(cè)試
@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>您的處方訂單已經(jīng)通過(guò)審核,請(qǐng)及時(shí)前往付款</p><br/>" +"<a href='http://49.233.250.224:8080/yaodian/login/'>登錄網(wǎng)上藥店</a><br/>",true);javaMailSender
.send(mMessage
);} catch (MessagingException e
) {e
.printStackTrace();} catch (IOException e
) {e
.printStackTrace();}
本地測(cè)試輸入url,成功收到郵件!
項(xiàng)目部署
當(dāng)項(xiàng)目部署到云服務(wù)器上運(yùn)行時(shí)會(huì)出現(xiàn)運(yùn)行超時(shí)的錯(cuò)誤
!!!!因?yàn)榘l(fā)送郵件的服務(wù)默認(rèn)的是使用25端口,但是不管是阿里云還是騰訊云都把25端口禁用了原因是怕郵件泛濫
所以我特地去我的騰訊云找到25端口解封,但是還是有類似的信息提示
阿里云也是類似的
或者使用SSL協(xié)議發(fā)送郵件,使用服務(wù)器會(huì)使用465端口來(lái)發(fā)送郵件,而不是被阿里云服務(wù)器禁用的25端口。
不用SSL協(xié)議的話,一般解開(kāi)25端口就可以使用
如果還不行可能是因?yàn)長(zhǎng)inux無(wú)法解析域名
將我們的服務(wù)器主機(jī)名寫(xiě)成IP地址的形式
mail.smtp.host=smtp.qq.com
這樣發(fā)送郵件的功能就已經(jīng)能夠成功實(shí)現(xiàn)了
總結(jié)
以上是生活随笔為你收集整理的ssm实现发送邮件功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。