Spring实现邮件发送功能

前言:以前都是直接用Java自带的邮件工具发送邮件,现在Spring帮我们做了封装,提供了更好用更简单的发送邮件工具JavaMailSender,关于邮件服务器的设置就不在这里说了,直接去QQ邮箱设置下就好,下面看下主要的步骤:

步骤一、添加发送邮件相关Maven依赖

<!-- Spring 邮件发送 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.7</version>
    </dependency>    

步骤二、添加相关Spring配置,创建一个spring-mail.xml(如果是Spring-Boot请无视),内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">

  <!-- Spring JavaMailSender -->
  <bean class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.qq.com"></property>
    <!-- 或许你可以用465端口,默认的25不适合 -->
    <property name="port" value="587"/>
    <property name="protocol" value="smtp"/>
    <property name="username" value="******@qq.com"></property>
    <!-- 这里的是你在QQ邮箱发送开通SMTP短信后,获取的授权码 -->
    <property name="password" value="******"></property>
    <property name="defaultEncoding" value="UTF-8"/>
    <property name="javaMailProperties">
      <props>
        <prop key="mail.smtp.auth">true</prop>
        <prop key="mail.smtp.timeout">25000</prop>
      </props>
    </property>
  </bean>
</beans>

步骤三、创建具体的邮件发送工具类

/**
 * 基于Spring的JavaMailSender的邮件发送工具类
 * @author simon
 *
 */
@Component
public class EmailSender {

  @Autowired
  private JavaMailSender javaMailSender;

  private static EmailSender emailSender;

  @PostConstruct
  public void init() {
    emailSender = this;
    emailSender.javaMailSender= this.javaMailSender;
  }

  /**
   * 发送简单的文本邮件
   * @param sendTo    收件人组
   * @param subject    主题
   * @param content    文本内容
   */
  public static void sendSimpleMessage(String sendFrom, String[] sendTo, String subject, String textcontent) {
    SimpleMailMessage mail = new SimpleMailMessage();
    mail.setFrom(sendFrom);
    mail.setTo(sendTo);
    mail.setSubject(subject);
    mail.setText(textcontent);
    //发送
    emailSender.javaMailSender.send(mail);
  }

  /**
   * 发送HTML内容格式的邮件
   * @param sendFrom
   * @param sendTo      收件人组
   * @param subject      主题
   * @param htmlContent    HTML内容
   * @throws Exception
   */
  public static void sendHtmlMessage(String sendFrom, String[] sendTo, String subject, String htmlContent) throws Exception {
    MimeMessage mimeMessage = emailSender.javaMailSender.createMimeMessage(); 

    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
    mimeMessageHelper.setFrom(sendFrom);
    mimeMessageHelper.setTo(sendTo);
    mimeMessageHelper.setSubject(subject);
    // true 表示启动HTML格式的邮件
    mimeMessageHelper.setText(htmlContent, true); 

    // 发送邮件
    emailSender.javaMailSender.send(mimeMessage);
  }

}

步骤四、创建单元测试测试发送邮件

/**
 * 邮件发送测试类
 *
 * @author simon
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class EmailSenderTest {

  @Test
  public void testSend() throws Exception {
    String sendFrom = "1317492210@qq.com";
    String[] sendTo = {"zhaosheng@hitencent.com"};
    String subject = "Spring自带JavaMailSender发送的HTML邮件";
    StringBuilder htmlContent = new StringBuilder()
        .append("<html>")
        .append("<head>")
        .append("<title>")
        .append("Spring自带JavaMailSender发送的HTML邮件")
        .append("</title>")
        .append("</head>")
        .append("<body>")
        .append("您好!陌生人<p/>")
        .append("</body>")
        .append("</html>");

    EmailSender.sendHtmlMessage(sendFrom, sendTo, subject, htmlContent.toString());
    System.out.println("邮件发送成功.");
  }

OK,到这里全部的步骤就结束了,是不是比Java Mail简单方便很多哉,赶紧自己动手试试吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot实战之发送邮件示例代码

    一.邮件服务简介 邮件服务在互联网早期就已经出现,如今已成为人们互联网生活中必不可少的一项服务.那么邮件服务是怎么工作的呢?如下给出邮件发送与接收的典型过程: 1.发件人使用SMTP协议传输邮件到邮件服务器A: 2.邮件服务器A根据邮件中指定的接收者,投送邮件至相应的邮件服务器B: 3.收件人使用POP3协议从邮件服务器B接收邮件. SMTP(Simple Mail Transfer Protocol)是电子邮件(email)传输的互联网标准,定义在RFC5321,默认使用端口25: POP3(

  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 如其他自动化配置模块一样,在完成了依赖引入之后,只需要在applicatio

  • Spring Boot发送邮件详解

    Spring框架使用JavaMailSender接口为发送邮件提供了一个简单的抽象,并且Spring Boot也为它提供了自动配置和一个starter模块. 如果spring.mail.host和相关的库(通过spring-boot-starter-mail定义)都存在,一个默认的JavaMailSender将被创建.该sender可以通过spring.mail命名空间下的配置项进一步自定义,下面本站素文宅博客具体讲述一下Spring Boot如何实现发送邮件. 引入spring-boot-st

  • spring mail借助qq邮箱服务器发送邮件

    spring mail封装了javaMail的邮件服务,让邮件服务使用起来更简单,下面以qq邮箱服务器为例,用spring mail服务来发送邮件 配置qq邮箱,"设置"--"账户",打开smtp服务,生成授权码 生成授权码需要验证手机,接下来用qq邮箱账号和授权码就可以发送邮件了,不需要qq密码 spring mail服务在spring-context-support中,配置依赖,然后就可以借助qq邮箱提供的发件服务器发送邮件了 <dependency>

  • Spring学习笔记3之消息队列(rabbitmq)发送邮件功能

    rabbitmq简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBM WEBSPHERE MQ. 本节的内容是用户注册时,将邮

  • Spring Boot实现邮件注册功能示例代码

    注册流程 1.[前端] 用户在注册页面提交注册信息: 2.[后端] 校验用户提交的参数,有误直接返回错误信息,无误向下执行: 3.[后端] 随机生成一个ID,将ID作为key,用户信息作为value,存入redis,设置时长: 4.[后端] 生成激活链接,通过邮件系统发送邮件到用户邮箱 5.[前端] 用户点击上图的"确认注册": 6.[后端] 校验value是否过期,校验邮箱是否已经注册,没有则保存用户信息到数据库,提示用户已经注册成功: 功能实现(逆向分析) 1.先看看邮件发送的实现

  • Spring+quartz实现定时发送邮件功能实例

    在做具体的系统管理时,往往会有每隔一段时间发给用户一些邮件的业务,现在参考的网上的大部分代码,写下了我自己的代码. 在ApplicationContext.xml的内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.spr

  • SpringMVC实现通过邮件找回密码功能

    最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 加密能防止伪造攻击,一次url只能验证一次,并且绑定了用户

  • Java的Spring框架中实现发送邮件功能的核心代码示例

    Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller.action等地方. 下面是配置: <!-- mail sender --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="${mail.host}" p:port="${mail.por

  • springMVC发送邮件的简单实现

    利用javax.mail发送邮件,图片与附件都可发送 1,Controller类 package com.web.controller.api; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.

随机推荐