日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ssm实现发送邮件功能

發(fā)布時(shí)間:2025/3/12 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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配置文件
  • #服務(wù)器主機(jī)名 smtp.xx.com mail.smtp.host=smtp.qq.com #若無(wú)法識(shí)別可以寫(xiě)IP地址58.251.106.181,此處可能會(huì)用在部署到云服務(wù)器運(yùn)行時(shí)設(shè)置 mail.smtp.username=**********@qq.com #密碼/客戶端授權(quán)碼 mail.smtp.password=*********** #剛剛得到的授權(quán)碼 #編碼字符 mail.smtp.defaultEncoding=utf-8 #是否進(jìn)行用戶名密碼校驗(yàn) mail.smtp.auth=true #設(shè)置超時(shí)時(shí)間 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;//在spring中配置的郵件發(fā)送的beanMimeMessage mMessage=javaMailSender.createMimeMessage();//創(chuàng)建郵件對(duì)象MimeMessageHelper mMessageHelper;Properties prop = new Properties();String from;try {//從配置文件中拿到發(fā)件人郵箱地址prop.load(this.getClass().getResourceAsStream("/db.properties"));from = prop.get("mail.smtp.username")+"";mMessageHelper=new MimeMessageHelper(mMessage,true);mMessageHelper.setFrom(from);//發(fā)件人郵箱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/>"/* + "<img src='cid:fengye'>"*/,true);//郵件的文本內(nèi)容,true表示文本以html格式打開(kāi)javaMailSender.send(mMessage);//發(fā)送郵件} 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地址的形式

    #服務(wù)器主機(jī)名 smtp.xx.com mail.smtp.host=smtp.qq.com #若無(wú)法識(shí)別可以寫(xiě)IP地址58.251.106.181,此處可能會(huì)用在部署到云服務(wù)器運(yùn)行時(shí)設(shè)置

    這樣發(fā)送郵件的功能就已經(jīng)能夠成功實(shí)現(xiàn)了

    總結(jié)

    以上是生活随笔為你收集整理的ssm实现发送邮件功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。