前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring发送邮件总结(附源码)

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

作者头像
明明如月学长
发布2021-08-27 10:41:04
发布2021-08-27 10:41:04
59400
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

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

如果使用maven项目:

Pom.xml

添加的内容

代码语言:javascript
代码运行次数:0
运行
复制
			org.springframework
			spring-core
			3.2.4.RELEASE
		
		
			org.springframework
			spring-context
			3.2.4.RELEASE
		
		
			org.springframework
			spring-jdbc
			3.2.4.RELEASE
		
		
			org.springframework
			spring-web
			3.2.4.RELEASE
		
		
			org.springframework
			spring-aop
			3.2.4.RELEASE
		


		
		    org.springframework
		    spring-context-support
		    3.2.4.RELEASE
		
		
		
    
      javax.mail
      mail
      1.4.4

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

EmailUtil

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
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= "云书签注册激活欢迎使用,云书签。
云书签
点击上面超链接 激活账户信息!";
		
        try {
			mail.sendMail("云书签注册自动发邮件", html,true, "***@qq.com");
		} catch (MessagingException e) {
			System.out.println("发送邮件失败!");
			//e.printStackTrace();
		}
	}

}

Spring配置文件

代码语言:javascript
代码运行次数:0
运行
复制
                  true  
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/03/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档