基于SSM的spring发送邮件的实现

6 篇文章 1 订阅
5 篇文章 0 订阅

邮件发送功能是我们在开发中非常常见的一个需求,对于各种账号的注册绑定和账号激活都是非常好用的。因此今天我们来学习一下在spring中实现发送邮件的功能。

1.导入jar包。首先我们需要在我们spring项目中添加以下两个jar包(我是使用的maven所以直接配置依赖信息)
 

<!--spring支持-->
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.0.0.RELEASE</version>
</dependency>
<!--邮件发送-->
<dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.1</version>
</dependency>

2.配置邮件服务器等信息。

先在邮箱中设置开启smtp和pop3服务然后拿到授权码:

 

mail.properties文件:

#服务器主机名 smtp.xx.com
mail.smtp.host=smtp.163.com
mail.smtp.username=viking_yan@163.com
#密码/客户端授权码
mail.smtp.password=XXXXXXXXX
#编码字符
mail.smtp.defaultEncoding=utf-8
#是否进行用户名密码校验
mail.smtp.auth=true
#设置超时时间
mail.smtp.timeout=20000


3.配置spring-mybatis.xml。在配置文件中导入properties文件的属性:

 <!--邮件配置-->
<context:property-placeholder location="classpath:config/mail.properties" ignore-unresolvable="true"/>
    

其中ignore-unresolvable="true"属性是配置文件中存在多个property-placeholder时出现解析不了的占位符进行忽略掉,详细解释可以参考这位大神的博客:property-placeholder

然后注入一个邮件发送的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>

所有配置都完成了

4.编写一个测试类来测试一下:

package com.ssm.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.IOException;
import java.util.Properties;

/**
 * created by viking on 2018/07/17
 * 测试邮件发送controller
 */
@RestController
@RequestMapping("mail")
public class SendMailController {
    @Autowired
    private JavaMailSender javaMailSender;//在spring中配置的邮件发送的bean

    @RequestMapping("send")
    public Object sendMail03(){
        MimeMessage mMessage=javaMailSender.createMimeMessage();//创建邮件对象
        MimeMessageHelper mMessageHelper;
        Properties prop = new Properties();
        String from;
        try {
            //从配置文件中拿到发件人邮箱地址
            prop.load(this.getClass().getResourceAsStream("/config/mail.properties"));
            from = prop.get("mail.smtp.username")+"";
            mMessageHelper=new MimeMessageHelper(mMessage,true);
            mMessageHelper.setFrom(from);//发件人邮箱
            mMessageHelper.setTo("viking_yan@163.com");//收件人邮箱
            mMessageHelper.setSubject("Spring的邮件发送");//邮件的主题
            mMessageHelper.setText("<p>这是使用spring的邮件功能发送的一封邮件</p><br/>" +
                    "<a href='https://blog.csdn.net/Mr__Viking'>打开我的博客主页</a><br/>" +
                    "<img src='cid:fengye'>",true);//邮件的文本内容,true表示文本以html格式打开
            File file=new File("F:/img/枫叶.png");//在邮件中添加一张图片
            FileSystemResource resource=new FileSystemResource(file);
            mMessageHelper.addInline("fengye", resource);//这里指定一个id,在上面引用
            mMessageHelper.addAttachment("枫叶.png", resource);//在邮件中添加一个附件
            javaMailSender.send(mMessage);//发送邮件
        } catch (MessagingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "发送成功";
    }
}

5.测试结果。直接上图:

     访问接口运行程序

    查看邮箱的收到的邮件信息

收到的邮件和我们预期的一样,说明我们的功能完美的实现了。

这个邮件发送功能的实现我参考了下面这位博主的博客:传送门 他是用spring实现的,如果是只用了spring的朋友可以去看下。

对于文中的不足和建议,欢迎各位大佬留言指正!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值