当前位置: 首页 > 编程笔记 >

基于Spring的Maven项目实现发送邮件功能的示例

单于奕
2023-03-14
本文向大家介绍基于Spring的Maven项目实现发送邮件功能的示例,包括了基于Spring的Maven项目实现发送邮件功能的示例的使用技巧和注意事项,需要的朋友参考一下

问题分析

现在我们有这样一个需求,就是当我们系统出现问题或bug的时候,让系统通过邮件发送日志信息给相关人员,那么此时,我们就需要实现一个让系统发送邮件的功能

解决步骤

1.pom jar包导入

<dependency>
 <groupId>javax.mail</groupId>
 <artifactId>mail</artifactId>
 <version>1.4.1</version>
</dependency>

2.xml配置

application-mail.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
  ">

<!--配置发送邮件的核心对象-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <!--邮件发送协议-->
  <property name="host" value="smtp.qq.com"/>

  <!--这里的邮箱是你要发送邮件的邮箱-->
  <property name="username" value="xxxxxx@qq.com"/>
  <!--这里的密码用的是授权码-->
  <property name="password" value="xxxxxxx"/>
  <property name="defaultEncoding" value="UTF-8"/>
  <property name="javaMailProperties">
    <props>
      <!--这里是需要认证才能进行发送,防止随意发送-->
      <prop key="mail.smtp.auth">true</prop>
      <!-- SMTP加密方式:连接到一个TLS保护连接 -->
      <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
  </property>
</bean>
</beans>

3.交给Spring管理

其实就是将发送邮件的xml配置文件引入到spring的配置文件中

<!--配置导入配置文件,位置为当前目录平级的plugs文件夹下面的所有.xml文件-->
<import resource="classpath:plugins/*.xml"/>

这里需要说明一下,classpath后面是跟的我的一个关于实现这些功能专门的配置文件的文件夹,然后通配文件夹里面所有.xml的配置文件,当然,也可以这样写

<import resource="classpath:plugins/applicationContext-mail.xml"/>

这样配置也完全没有任何问题,看个人喜好哈,只是我喜欢把这些相关的配置文件同一放在一个文件夹里面,然后统一一起引入

4.代码实现

需要说明一下,邮件分为两种,一种是普通邮件,即文本信息,不含html代码或附件,另一个种就是包含html代码和附件的,这两种方式相同的是都需要在发送邮件的类里面引入发送邮件的核心对象

@Autowired
private JavaMailSender javaMailSender;

4.1 普通邮件

需要注意的是这里发送邮件的地址必须是applicaiton-mail.xml中所配置的username

  //获取邮箱对象
  SimpleMailMessage message = new SimpleMailMessage();

  //设置由哪个邮箱发出 这里自己定义
  message.setFrom("xxxxxx@qq.com");

  //设置标题
  message.setSubject("测试来了哦");
  //设置发送内容
  message.setText("我来了,你来了没");

  //设置发送地址 -- 发给谁
  message.setTo("xxxx@icloud.com");

  //发送邮件
  javaMailSender.send(message);

4.1 复杂邮件

 //创建一个空邮件对象
  MimeMessage mimeMessage = javaMailSender.createMimeMessage();

  //创建发送复杂邮件的工具类,并传入空邮件,设置是否有附件为true和编码集
  MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

  //设置发送邮件的邮箱地址,必须和xml里面配置一致
  messageHelper.setFrom("xxxxxx@qq.com");

  //设置邮件标题
  messageHelper.setSubject("复杂邮件标题,就是我");

  //设置邮件里面的普通内容
  messageHelper.setText("我是复杂邮件,我又来了");

  //设置复杂邮件的html代码,并设置是否为html为true
  messageHelper.setText("<h2>我是复杂邮件的html代码,能实现不?</h2>",true);

  //添加发送邮件的附件,是一个图片
  messageHelper.addAttachment("hah.png",new File("img/1.png"));

  //添加附件文件
  messageHelper.addAttachment("mf文件",new File("s/login.jsp"));

  //抄送给谁 这里的参数可以是数组,即多个接收对象
  messageHelper.setCc("mmmm@qq.com");
  //发送给谁 这里的参数可以是数组,即多个接收对象
  messageHelper.setTo("xxxx@icloud.com");

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

5.邮箱配置

注意,大家不要以为现在就可以直接发送了,还需要大家花一毛钱才行,这个钱不是给我哈,也不是给邮箱或浏览器,而是给到运营商,这里就以QQ邮箱为例:

第一步,点击邮箱首页左上角的设置


第二步,选中设置里面的账户设置


第三步,往下翻,翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

第四步,会让你发送短信,这时候就可以直接发送短信,这里就到了收钱的地方,看吧,不是我收哈


最后,当发送成功之后,就会收到一个授权码,记住它,然后填入你的application-mail.xml里面的password栏中,然后再运行我们的测试方法即可

到此这篇关于基于Spring的Maven项目实现发送邮件功能的示例的文章就介绍到这了,更多相关Spring Maven项目发送邮件内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍Spring实现邮件发送功能,包括了Spring实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 前言:以前都是直接用Java自带的邮件工具发送邮件,现在Spring帮我们做了封装,提供了更好用更简单的发送邮件工具JavaMailSender,关于邮件服务器的设置就不在这里说了,直接去QQ邮箱设置下就好,下面看下主要的步骤:  步骤一、添加发送邮件相关Maven依赖 步骤二、

  • 本文向大家介绍基于JavaMail的Java实现复杂邮件发送功能,包括了基于JavaMail的Java实现复杂邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 上一篇文章 基于 JavaMail 的 Java 邮件发送:简单邮件发送 讲解了邮件的基本协议,JavaMail组件,创建并发送一封简单邮件的详细步骤。本文将介绍如何创建并发送一封包含图片和附件的复杂邮件。 一封复杂的邮件内容可以看做是

  • 本文向大家介绍python实现邮件发送功能,包括了python实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 什么是POP3、SMTP和MAP? POP3是Post Office Protocol 3的简称,即邮局协议的第三个版本,他是规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的协议。它是因特网电子邮件的第一个离线协议的标准。POP3允许用户从服务器上把邮件存储

  • 本文向大家介绍JavaWeb实现邮件发送功能,包括了JavaWeb实现邮件发送功能的使用技巧和注意事项,需要的朋友参考一下 基于JavaWeb的邮件发送功能(多附件),供大家参考,具体内容如下 本次学习主要目的是为了测试由QQ邮箱发送到任意一个有效邮箱的功能实现,附带多个附件。学习者可以借鉴其他邮箱的格式,梳理一下要写的内容。项目把文件内容放到了MimeMessage 邮件对象里,其中包含了如发件

  • 本文向大家介绍java实现发送邮件功能,包括了java实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 前言 前段时间做一个紧急的功能,其中有部分需求是需要发邮件通知;通过查阅以及实验,很快的写了个发送邮件的功能;现在整理一下记录下来。 发送邮件 一、在pom中引入相关依赖 二、发送邮件的工具类 三、遇到的坑 在本地测试没有问题;我们的测试服务在阿里云上,阿里云对发送的时候是失败;追踪日志

  • 本文向大家介绍Django实现发送邮件功能,包括了Django实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 1)首先注册一个邮箱,这里以163邮箱为例   2)注册之后登录,进行如下修改     找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件,但是不能登录到邮箱进行修改,发送邮件时,可以代替密码                         3)然后在项目里的配置文件s