Spring发送邮件总结(附源码)

做项目用到自动发邮件功能,网上查阅很多没有给出特别详细的说明,需要自己去探索,做了很多弯路。

在此给大家分享一下自己的代码:

360网盘下载地址:http://yunpan.cn/cJzDQ3gVUHBxY  访问密码 8221

使用时 请将Spring 配置文件里的  用户名、密码、邮箱服务器 还有端口 进行修改如果不是 yeah邮箱。

如果使用maven项目:

Pom.xml

添加的内容

<!-- Spring3 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>

<!-- Spring Email -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-context-support</artifactId>
		    <version>3.2.4.RELEASE</version>
		</dependency>

		<!-- Javamail API -->
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.4</version>
</dependency>

如果直接导入JAR方式 ,需要引入如下JAR包

EmailUtil

package com.bookmarksClouds.util;

import java.io.File;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.core.io.ClassPathResource;
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.stereotype.Component;
@Component("simpleMail")
public class EmailUtil
{

	  private JavaMailSender javaMailSender;
	  private SimpleMailMessage simpleMailMessage;

	  /**
	     *
	     * @方法名: sendMail
	     * @参数名:@param subject 邮件主题
	     * @参数名:@param content 邮件主题内容
	     * @参数名:@param to        收件人Email地址
	     * @param isHtml  是否是html格式(发送html时使用utf-8编码)
	     * @描述语:  发送邮件
	     * @throws MessagingException 发送发生了异常
	     */
	    public void sendMail(String subject, String content,boolean isHtml, String to) throws MessagingException
	    {

	            MimeMessage mimeMessage = javaMailSender.createMimeMessage();

	            MimeMessageHelper messageHelper =null;
	            if(isHtml)
	            {
	            	 messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
	            }
	            else
	            {
	               messageHelper = new MimeMessageHelper(mimeMessage,true);
	            }
	            messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
	            messageHelper.setSubject(subject); //设置邮件主题
	            if(isHtml)
	            {
	            	 messageHelper.setText(content,true);   //设置邮件主题内容(html格式)
	            }
	            else
	            {
	            	 messageHelper.setText(content);   //设置邮件主题内容
	            }

	            messageHelper.setTo(to);          //设定收件人Email

	            javaMailSender.send(mimeMessage);
	    }

	   /**
	    * 发送邮件 (包含附件)
	    * @param subject 主题
	    * @param content 内容
	    * @param fileAttachment 附件文件
	    * @param isHtml 内容是否是html格式
	    * @param to 发送的邮箱地址
	    * @throws MessagingException 发送邮件异常(失败)
	    */
	    public void sendMail(String subject, String content,boolean isHtml, File fileAttachment,String to) throws MessagingException
	    {

	            MimeMessage mimeMessage = javaMailSender.createMimeMessage();

	            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");

	            messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
	            messageHelper.setSubject(subject); //设置邮件主题

	            if(isHtml)
	            {
	            	 messageHelper.setText(content,true);   //设置邮件主题内容(html格式)
	            }
	            else
	            {
	            	 messageHelper.setText(content);   //设置邮件主题内容
	            }
	            messageHelper.setTo(to);          //设定收件人Email
	            FileSystemResource file = new FileSystemResource(fileAttachment);

	             messageHelper.addAttachment(file.getFilename(), file); //添加附件
	            javaMailSender.send(mimeMessage);
	        }

	    /**
		    * 发送邮件 (包含附件)
		    * @param subject 主题
		    * @param content 内容
		    * @param classPathResource 附件文件(附加在项目内部时候)
		    * @param isHtml 内容是否是html格式
		    * @param to 发送的邮箱地址
	     * @throws MessagingException
		    */
		    public void sendMail(String subject, String content,boolean isHtml, ClassPathResource classPathResource,String to)
		    		throws MessagingException
		    {

		            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		          /**
		             * new MimeMessageHelper(mimeMessage,true)之true个人见解:
		             * 关于true参数,官方文档是这样解释的:
		             * use the true flag to indicate you need a multipart message
		             * 翻译过来就是:使用true,以表明你需要多个消息
		             * 再去翻一下MimeMessageHelper的API,找到这样一句话:
		             * supporting alternative texts, inline elements and attachments
		             * 也就是说,如果要支持内联元素和附件就必须给定第二个参数为true
		             * 否则抛出 java.lang.IllegalStateException 异常
		             */
		            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
		            messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email
		            messageHelper.setSubject(subject); //设置邮件主题
		            if(isHtml)
		            {
		            	 messageHelper.setText(content,true);   //设置邮件主题内容(html格式)
		            }
		            else
		            {
		            	 messageHelper.setText(content);   //设置邮件主题内容
		            }
		            messageHelper.setTo(to);          //设定收件人Email
		            /**  FileSystemResource file = new FileSystemResource(fileAttachment);

		             * ClassPathResource:很明显就是类路径资源,我这里的附件是在项目里的,所以需要用ClassPathResource
		             * 如果是系统文件资源就不能用ClassPathResource,而要用FileSystemResource,例:
		             * 

		            ClassPathResource file = new ClassPathResource("attachment/Readme.txt");
		              */
		          /**
		             * MimeMessageHelper的addAttachment方法:
		             * addAttachment(String attachmentFilename, InputStreamSource inputStreamSource)
		             * InputStreamSource是一个接口,ClassPathResource和FileSystemResource都实现了这个接口

		              //发送附件邮件
		            */
		            ClassPathResource file = classPathResource;
		             messageHelper.addAttachment(file.getFilename(), file); //添加附件
		            javaMailSender.send(mimeMessage);  

		    }

	      //Spring 依赖注入
	    @Resource
	    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
	        this.simpleMailMessage = simpleMailMessage;
	    }
	      //Spring 依赖注入
	    @Resource
	    public void setJavaMailSender(JavaMailSender javaMailSender) {
	        this.javaMailSender = javaMailSender;
	    }

}

Demo

package com.bookmarksClouds.test;

import javax.mail.MessagingException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bookmarksClouds.util.EmailUtil;

public class EmailUtilTest
{
	 private  ApplicationContext factory = new ClassPathXmlApplicationContext(
	            new String[] {"spring/spring-smtp-mail-attachment.xml"});
	@Test
	public void test()
	{

		EmailUtil mail = (EmailUtil)factory.getBean("simpleMail");
		String html= "<html><head><META http-equiv=Content-Type content='text/html; charset=UTF-8'><title>云书签注册激活</title></head><body>欢迎使用,云书签。<br/><a href='www.baidu.com' >云书签</a><br>点击上面超链接 激活账户信息!</body><html>";

        try {
			mail.sendMail("云书签注册自动发邮件", html,true, "***@qq.com");
		} catch (MessagingException e) {
			System.out.println("发送邮件失败!");
			//e.printStackTrace();
		}
	}

}

Spring配置文件

<?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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.2.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
                      <context:annotation-config/>
<context:component-scan base-package="com.bookmarksClouds"/>  

<bean  id ="mailSender"  class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
         <!--  服务器  -->
          <property  name ="host"  value ="smtp.163.com"   />
          <!--  端口号  -->
          <property  name ="port"  value ="25"   />
          <!--  用户名  -->
          <property  name ="username"  value ="邮箱地址"   />
          <!--   密码    -->
          <property  name ="password"  value ="邮箱密码"   />
          <!--  SMTP服务器验证  -->
          <property  name ="javaMailProperties" >
              <props >
                  <!--  验证身份  -->
                 <prop  key ="mail.smtp.auth" > true </prop >
             </props >
          </property >
 </bean >
 <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
        <!-- 发件人email -->
        <property name="from" value="发送邮箱地址" />
        <!--
         收件人email
        <property name="to" value="[email protected]" />
        email主题(标题)
        <property name="subject" value="Subject" />
        email主题内容
        <property name="text">
          <value>ContentText</value>
        </property>
        -->
    </bean>

</beans>
时间: 2024-10-12 01:01:13

Spring发送邮件总结(附源码)的相关文章

深入浅出 Spring Cache 使用与整合(附源码解析)

深入浅出 Spring Cache 使用与整合(附源码解析) 个人开发环境 java环境:Jdk1.8.0_60 编译器:IntelliJ IDEA 2019.1 springCache官方文档:https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/integration.html#cache 一.Spring缓存抽象 SpringCache产生的背景其实与Spring产生的背景有点类似.由于Jav

spring学习笔记2---MVC处理器映射(handlerMapping)三种方式(附源码)

一.根据Beanname访问controller: 在springmmvc-servlet.xml的配置handlermapping中加入beanname,通过该beanname找到对应的controller实现控制 1 <!-- 配置HandlerMapping 根据beanname找到对应Controller --> 2 <bean 3 class="org.springframework.web.servlet.mvc.support.ControllerBeanName

javaweb异常提示信息统一处理(使用springmvc,附源码)

一.前言 后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适. 先不考虑代码实现,我们希望是这样的: (1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异常显示页面,如下: 当然,这里的界面不够美观,但是理论是这样的. (2)如果是ajax请求,那么我们,希望后台将合理的错误显示返回到ajax的回调函数里面,如下: $.ajax({ type: "post", url: "<%=request.getContextPath(

Mybatis+SpringMVC实现分页查询(附源码)

Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建,这篇文章提供了详细的搭建过程,而且提供了源码下载,接下来的将在这个源码的基础上继续开发.所以建议各位猿友可以把猿友下载一下. 二.分页插件的介绍 博主采用的插件是PageHelper这个插件,使用起来十分方便.该插件支持以下数据库: Oracle Mysql MariaDB SQLite

手把手实现Java图书管理系统(附源码)

基于SSM的图书管理系统的设计与实现 一.系统简介 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了图书管理系统的实现,包括:1.环境搭建2.系统功能3.技术实现4.项目运行5.功能演示6.系统扩展 以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.MyBatis2.UI界面:BootStr

手把手搭建Java网上银行系统【附源码】(毕设)

一.项目简介 本课程演示的是一套基于Java的SSH框架实现的网上银行系统 或 银行管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了网上银行系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示 以通俗易懂的方式,手把手的带你从零开始运行本套网上银行系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:SSH(Spring.Struts2.Hibernate) 2.UI界面:BootStrap.j

手把手搭建Java健身房管理系统【附源码】(毕设)

一.项目简介 本课程演示的是一套基于JavaWeb实现的健身房管理系统 或 健身俱乐部管理系统 或 健身会所管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了健身房管理系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示 以通俗易懂的方式,手把手的带你从零开始运行本套健身房管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.Hibernate 2.?UI界面

手把手搭建Java在线商城系统【附源码】(毕设)

一.项目简介 本课程演示的是一套基于Java的SSM框架实现的在线商城系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了在线商城系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示 以通俗易懂的方式,手把手的带你从零开始运行本套在线商城系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.MyBatis 2.UI界面:BootStrap.JSP.jQuery 3.数据

手把手搭建Java酒店管理系统【附源码】(毕设)

一.项目简介 本课程演示的是一套基于Java的SSM框架实现的酒店管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了酒店管理系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示 以通俗易懂的方式,手把手的带你从零开始运行本套酒店管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.MyBatis ? 2.UI界面:BootStrap.JSP.jQuery 3.

一组网页边栏过渡动画,创意无限!【附源码下载】

今天我们想与大家分享另一套过渡效果.这一次,我们将探讨如何实现侧边栏的过渡动画,就像我们已经在多级推出菜单中使用的.我们的想法是,以细微的 过渡动画显示一些隐藏的侧边栏,其余的内容也是.通常侧边栏滑入,把其他内容推到一边.这个可过程中可以加入很多微妙而奇特的效果,而今天这篇文章能够给 你一些启示. 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 立即下载      在线演示 因为我们希望能够在一个页面上展现所有的效果,因此我们示