码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-06 01:06:24      阅读:291      评论:0      收藏:0      [点我收藏+]

标签: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="to@yeah.net" />
        email主题(标题)
        <property name="subject" value="Subject" />
        email主题内容
        <property name="text">
          <value>ContentText</value>
        </property>
        -->
    </bean>
   
</beans>




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

标签:spring 发送邮件 附源码

原文地址:http://blog.csdn.net/w605283073/article/details/44089327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!