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测试
    在这里插入图片描述

在这里插入图片描述

@Autowired
    private JavaMailSender javaMailSender;//在spring中配置的邮件发送的bean



 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/>"
                    /* + "<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(Spring+SpringMVC+Mybatis)后端开发。该系统旨在提供用户高效地发送和接收电子邮件的功能。 首先,设计该系统的架构,使用SSM框架可以有效整合Spring、SpringMVC和Mybatis的优点,提高开发效率和系统的可维护性。首先,使用Spring框架来管理依赖注入和事务管理,简化开发流程。然后,利用SpringMVC来处理用户的请求和生成响应,实现前后端的数据交互。最后,通过Mybatis来实现数据持久化,提供对数据库的操作和查询。 其次,需要设计数据库结构来存储邮件相关的数据。可以创建邮件表、收件人表、发件人表等来存储邮件的详细信息和相关联系人信息。通过Mybatis进行数据库操作,可以方便地进行增删改查等操作。 接下来,实现各种功能模块。例如,用户登录模块,通过Mybatis从数据库中验证用户的账号和密码是否正确;邮件发送模块,用户可以填写邮件的主题、内容和收件人信息,通过调用邮件发送的API实现邮件的发送;邮件接收模块,用户可以查看收件箱、发件箱、草稿箱等邮件的详细信息,并支持邮件的删除、标记为已读等操作。 同时,为了增强系统的安全性,可以使用Spring Security框架来管理用户的权限和角色,提供身份验证和授权功能。只有经过身份验证的用户才能进行邮件的发送和接收操作。 最后,进行系统的测试和调试,确保系统的稳定性和正确性。可以使用单元测试和集成测试等方法对各个模块进行测试,及时发现和修复潜在的问题。 综上所述,邮件收发系统的设计与实现ssm后端开发需要结合Spring、SpringMVC和Mybatis框架,设计数据库结构,实现各个功能模块,并进行系统的测试和调试,以提供用户高效地发送和接收电子邮件的服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值