SSM实现发送邮件

  • 项目需求
  • 前期工作
  • 配置文件及代码
  • 项目部署

项目需求

用户注册时输入自己的邮箱地址(这里以QQ邮箱为例),用户提交订单,管理员操作订单,订单审核通过时给用户发送邮件提醒用户,审核成功请尽快付款。

前期工作

导入发送邮件功能相关jar包

配置邮件服务器信息

先在邮箱中设置开启smtp和pop3服务然后拿到授权码:
以QQ邮箱服务为例
设置->账户

配置文件及代码

  1. 写mail.properties配置文件
#服务器主机名 smtp.xx.com
mail.smtp.host=smtp.qq.com  #若无法识别可以写IP地址58.251.106.181,此处可能会用在部署到云服务器运行时设置
mail.smtp.username=**********@qq.com
#密码/客户端授权码
mail.smtp.password=*********** #刚刚得到的授权码
#编码字符
mail.smtp.defaultEncoding=utf-8
#是否进行用户名密码校验
mail.smtp.auth=true
#设置超时时间
mail.smtp.timeout=20000
  1. 配置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>
  1. Controller测试

@Autowiredprivate JavaMailSender javaMailSender;//在spring中配置的邮件发送的beanMimeMessage 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/>"/* + "<img src='cid:fengye'>"*/,true);//邮件的文本内容,true表示文本以html格式打开javaMailSender.send(mMessage);//发送邮件} catch (MessagingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

本地测试输入url,成功收到邮件!

项目部署

当项目部署到云服务器上运行时会出现运行超时的错误
!!!!因为发送邮件的服务默认的是使用25端口,但是不管是阿里云还是腾讯云都把25端口禁用了原因是怕邮件泛滥
所以我特地去我的腾讯云找到25端口解封,但是还是有类似的信息提示

阿里云也是类似的

或者使用SSL协议发送邮件,使用服务器会使用465端口来发送邮件,而不是被阿里云服务器禁用的25端口。

不用SSL协议的话,一般解开25端口就可以使用
如果还不行可能是因为Linux无法解析域名
将我们的服务器主机名写成IP地址的形式

#服务器主机名 smtp.xx.com
mail.smtp.host=smtp.qq.com  #若无法识别可以写IP地址58.251.106.181,此处可能会用在部署到云服务器运行时设置

这样发送邮件的功能就已经能够成功实现了

ssm实现发送邮件功能相关推荐

  1. SSM整合框架实现发送邮件功能

    SSM整合框架实现发送邮件功能 1.导入发送邮件的依赖 <!-- 发送邮件jar包--><!--spring支持--><dependency><groupId ...

  2. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  3. Selenium3自动化测试——23.自动发送邮件功能

    自动发送邮件是自动化测试项目的重要需求之一.发送邮件的协议,是简单邮件传输协议(SMTP). 1. Python自带的发送邮件功能 1.1 发送邮件正文 import smtplib from ema ...

  4. python定时发送邮件_Python3实现带附件的定时发送邮件功能

    本文实例为大家分享了Python3定时发送邮件功能的具体代码,供大家参考,具体内容如下 1. 导入模块 import os import datetime #定时发送,以及日期 import shut ...

  5. C#使用 System.Net.Mail发送邮件功能

    C#使用 System.Net.Mail发送邮件功能 .NET 里包含了很多很丰富的邮件发送与接受的API在 System.Net.Mail命名空间里,使得我们开发发送和接受邮件相关功能变得简单,下面 ...

  6. python 发送邮件connect none_Python发送邮件功能示例【使用QQ邮箱】

    本文实例讲述了Python发送邮件功能.分享给大家供大家参考,具体如下: 这里以QQ邮箱为例说明 登录邮箱点账号 开启smtp 开启时会要求你发送一条短信,发送完成后点已发送. 就有授权码了 代码如下 ...

  7. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...

  8. Python使用yagmail库实现发送邮件功能

    yagmail库的安装 pip install yagmail yagmail的使用: ''' @brief:自动发送邮件功能:用来通知以及debug ''' import yagmailyag = ...

  9. php mail laravel,Laravel框架实现的使用smtp发送邮件功能示例

    本文实例讲述了Laravel框架实现的使用smtp发送邮件功能.分享给大家供大家参考,具体如下: 1..env文件中配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.邮箱后缀 MA ...

最新文章

  1. 宇通客车java_6米采血车
  2. python 2/3 joblib.dump() 和 joblib.load()
  3. 3dmax全局材质灯光细分插件_3Dmax渲染Vray渲染提速优化技巧
  4. 微信小程序实现图片是上传、预览功能
  5. 中国WEB 2.0的质变过程
  6. Python常见的内置函数
  7. 笔记-项目配置管理-创建基线或发行基线的主要步骤
  8. shell脚本_Shell脚本
  9. win2003服务器 虚拟主机安全配置
  10. Python基础1(2017-07-16)
  11. php7对redis的扩展及redis主从搭建
  12. python雷达信号处理,信号处理之功率谱原理与python实现
  13. tv盒子管理助手android版本,TV盒子工具 管理电视盒子的好助手
  14. CAD梦想画图中“插入图片”
  15. 对代码签名另一种认识(下)
  16. 移动硬盘提示数据错误循环冗余检查要怎么办啊
  17. Python——用面相对象写奥特曼大战小怪兽
  18. android 输入法 悬浮窗口,Android EditText悬浮在输入法之上
  19. 计算机奖项含金量排名,大家一起拍下NBA常规赛各项奖项含金量排名,都是个人观点,讨论讨论...
  20. javacv从入门到精通——第三章:基本使用

热门文章

  1. 删边(normal)
  2. openfeign 负载均衡_再谈openfeign,聊聊它的源代码
  3. python post请求参数为list_浅谈python3发送post请求参数为空的情况
  4. OS之进程管理 --- 死锁
  5. linux软链接的创建、删除和更新
  6. Centos之帮助命令
  7. 函数式编程Map()Reduce()
  8. 重拾C,一天一点点_3
  9. WCF面向服务应用程序系列之一:Hello WCF
  10. python 删除非空文件夹