`

Spring发送邮件简单实例

阅读更多

 

1、spring配置文件(src/applicationContext.xml ):

	<bean id="mailSender"
		class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="222.173.82.207"></property>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">true</prop>
				<prop key="mail.smtp.timeout">25000</prop>
			</props>
		</property>
		<property name="username" value="tiandeqing@ecode.net.cn" />
		<property name="password" value="密码" />
	</bean>
	<bean id="freeMarker"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="classpath:mail" /><!--指定模板文件目录-->
		<property name="freemarkerSettings"><!-- 设置FreeMarker环境属性-->
			<props>
				<prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒-->
				<prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
				<prop key="locale">zh_CN</prop><!-- 本地化设置-->
			</props>
		</property>
	</bean>
 

2、Java代码:

给指定的单个用户发送普通文本邮件:SpringMail.java

 

package aaa;

import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class SpringMail {
	private Configuration cfg = new Configuration();  
	
 public static void main(String[] args) throws Exception {  
	         ApplicationContext ctx = new FileSystemXmlApplicationContext(  
	                 "src/applicationContext.xml");  
	         JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");  
	         SpringMail springMail = new SpringMail();  
	         springMail.sendMail(sender);  
	   
	     }  
	   
	     private void sendMail(JavaMailSender sender) throws Exception {  
	         SimpleMailMessage mail = new SimpleMailMessage();  
	         mail.setTo("tiandeqing@ecode.net.cn"); //接收人  
	         mail.setFrom("tiandeqing@ecode.net.cn"); //发送人  
	         mail.setSubject("test by amigo");  
	         //嵌入ftl模版  
	         cfg.setClassForTemplateLoading(getClass(), "/mail");  
	         Map root = new HashMap();  
	         root.put("username", "sucre"); //模板变量  
	         Template t = cfg.getTemplate("notify-mail.ftl");  
	         StringWriter writer = new StringWriter();  
	         t.process(root, writer);  
	         //把模版内容写入邮件中  
	         mail.setText(writer.toString());  
	         sender.send(mail);  
	         System.out.println("邮件发送成功!");  
	     }  
		
}

 

给指定的多个用户发送含有附件的html邮件,SpringMail_Batch_Attach_HTML.java

package aaa;

import java.io.File;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class SpringMail_Batch_Attach_HTML {
	private Configuration cfg = new Configuration();

	private static JavaMailSender sender = null;

	private static FreeMarkerConfigurer freeMarker = null;

	public static void main(String[] args) throws Exception {
		// init
		ApplicationContext ctx = new FileSystemXmlApplicationContext(
				"src/applicationContext.xml");
		JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
		SpringMail_Batch_Attach_HTML.sender = sender;
		SpringMail_Batch_Attach_HTML.freeMarker = (FreeMarkerConfigurer) ctx
				.getBean("freeMarker");

		SpringMail_Batch_Attach_HTML springMail = new SpringMail_Batch_Attach_HTML();
		//发送简单邮件
		springMail.sendMail(sender);
		//给某个人发送邮件,基于模板
		springMail.sendMessage("洒江河风景阿嫂法拉", "wytdq@126.com");

		//给某些人发送邮件,带附件
		List toList = new ArrayList();
		toList.add("xxx@sina.COM");
		toList.add("xxx@163.COM");
		toList.add("TIANDEQING@ECODE.NET.CN");
		springMail.sendBatchEmail("邮件批量发送测试", toList);
	}

	// 发送一封文本邮件给一个收件人
	private void sendMail(JavaMailSender sender) throws Exception {
		SimpleMailMessage mail = new SimpleMailMessage();
		mail.setTo("tiandeqing@ecode.net.cn"); // 接收人
		mail.setFrom("tiandeqing@ecode.net.cn"); // 发送人
		mail.setSubject("test by amigo");
		// 嵌入ftl模版
		cfg.setClassForTemplateLoading(getClass(), "/mail");
		Map root = new HashMap();
		root.put("username", "sucre"); // 模板变量
		Template t = cfg.getTemplate("notify-mail.ftl");
		StringWriter writer = new StringWriter();
		t.process(root, writer);
		// 把模版内容写入邮件中
		mail.setText(writer.toString());
		sender.send(mail);
		System.out.println("邮件发送成功!");
	}

	/**
	 * 发送带模板的单个html格式邮件
	 * 
	 * @throws Exception
	 */
	public void sendMessage(String content, String address) throws Exception {
		MimeMessage msg = sender.createMimeMessage();
		// 设置utf-8或GBK编码,否则邮件会有乱码,true表示为multipart邮件
		MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
		helper.setTo(address); // 邮件接收地址
		helper.setFrom("tiandeqing@ecode.net.cn"); // 邮件发送地址,这里必须和xml里的邮件地址相同一致
		helper.setSubject("测试ccc"); // 主题
		String htmlText = getMailText(content); // 使用模板生成html邮件内容
		helper.setText(htmlText, true); // 邮件内容,注意加参数true,表示启用html格式
		sender.send(msg); // 发送邮件
		System.out.println("sendMessage(String content,String address) OK");
	}

	/**
	 * 批量发送多媒体邮件
	 * */
	public void sendBatchEmail(String content, List address)
			throws MessagingException, UnsupportedEncodingException {
		MimeMessage msg = sender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
		
		StringBuffer html = new StringBuffer();
        html.append("<html>");
        html.append("<head>");
        html.append("<meta http-equiv='Content-Type' content='text/html; charset=gbk'>");
        html.append("</head>");
        html.append("<body bgcolor='#ccccff'>");
        html.append("<center>");
        html.append("<h1>你好,Jarry</h1>").append(content);
        html.append("<img src='cid:myimg'>");//显示图片
        html.append("<p>logo:");
        html.append("<img src='cid:vedio'>");
        html.append("</center>");
        html.append("</body>");
        html.append("</html>");
        
		String toList = getMailList(address);
		InternetAddress[] iaToList = new InternetAddress().parse(toList);
		msg.setRecipients(Message.RecipientType.TO, iaToList);
		helper.setFrom("tiandeqing@ecode.net.cn");
		helper.setSubject("批量发送测试");
		helper.setText(html.toString(), true);
		// 添加内嵌文件,第1个参数为cid标识这个文件,第2个参数为资源
		helper.addInline("myimg", new File("D:\\My Documents\\My Pictures\\tian.JPG")); // 附件内容
		helper.addInline("vedio", new File("D:\\My Documents\\My Pictures\\vedio.JPG"));
		File file = new File("D:\\My Documents\\My Pictures\\hibernate框架.jpg");
		// 这里的方法调用和插入图片是不同的(插入到最后,并且直接显示),使用MimeUtility.encodeWord()来解决附件名称的中文问题
		helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		// 如果主题出现乱码,可以使用该函数,也可以使用下面的函数
		// helper.setSubject(MimeUtility.encodeText(String text,String
		// charset,String encoding))
		// 第2个参数表示字符集,第三个为目标编码格式。
		// MimeUtility.encodeWord(String word,String charset,String encoding)
		sender.send(msg);
		System.out.println("sendBatchEmail OK");
	}

	/**
	 * 集合转换字符串
	 */
	public String getMailList(List<String> to) {
		StringBuffer toList = new StringBuffer();
		int length = to.size();
		if (to != null && length < 2) {
			toList.append(to.get(0));
		} else {
			for (int i = 0; i < length; i++) {
				toList.append(to.get(i));
				if (i != (length - 1)) {
					toList.append(",");
				}
			}
		}
		return toList.toString();
	}

	// 通过模板构造邮件内容,参数content将替换模板文件中的${content}标签。
	private String getMailText(String content) throws Exception {
		String htmlText = "";
		// 通过指定模板名获取FreeMarker模板实例
		Template tpl = freeMarker.getConfiguration().getTemplate(
				"registerUser.ftl");
		Map map = new HashMap(); // FreeMarker通过Map传递动态数据
		map.put("content", content); // 注意动态数据的key和模板标签中指定的属性相匹配
		// 解析模板并替换动态数据,最终content将替换模板文件中的${content}标签。
		htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(tpl, map);
		return htmlText;
	}
}
 

 

3、模板文件src/mail/notify-mail.ftl

 
 欢迎加入!  
   
 亲爱的${username}  
   
 请点击链接完成注册:  
   
 如果您的email程序不支持链接点击,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入****。  
   
 您可以在***:  
   
 查看最新的影视资料,查看各种相关消费产品,在这里交友,灌水……;  
   
 希望您在**度过快乐的时光!  
   
 -   
   
 (这是一封自动产生的email,请勿回复。)  

  模板文件src/mail/registerUser.ftl

<html>    
   <head>    
      <meta http-equiv="content-type" content="text/html;charset=utf8">    
   </head>    
   <body>    
       恭喜您成功注册!您的用户名为:<font color='red' size='30'>${content}</font>    
   </body>    
</html>   
 

 

4、例子使用了FreeMarker。

FreeMarker就是一种用Java编写的模板引擎,它根据模板输出多种规格的文本。

特别指出的是,FreeMarker与Web应用框架无关,它同样可以应用在非Web应用程序环境中。

 

 

程序目录结构:

 

 

注意在执行代码前,请确认已经将activation.jar,commons-logging-1.0.4.jar,mail.jar和spring.jar载入工程,并且服务器的25端口已开启。

 

 

 

 

  • 大小: 15.2 KB
  • springMail.rar (12.3 KB)
  • 描述: 程序代码(不含jar)
  • 下载次数: 321
分享到:
评论

相关推荐

    java 发送邮件 spring发送邮件Mail

    Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...

    照着spring in action例子做的用spring发送邮件的例子

    "照着spring in action例子做的用spring发送邮件的例子"是一个基于Spring框架实现电子邮件发送功能的实践项目。在这个项目中,我们将探讨Spring如何与JavaMailSender接口结合,以发送邮件。 1. **Spring与邮件服务...

    java发送邮件 spring发送邮件

    通过以上步骤,你就可以在Java应用中使用Spring发送邮件了。当然,实际的邮件发送可能更复杂,涉及HTML内容、附件、多部分消息等,可以使用`MimeMessage`和`MimeMessageHelper`类来构建复杂的邮件结构。例如,添加...

    spring发送邮件demo

    下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...

    spring各种邮件发送

    在"spring各种邮件发送"这个主题中,我们将探讨Spring框架如何帮助开发者实现电子邮件的发送。邮件服务在许多应用场景中都十分常见,例如用户注册确认、密码重置提醒等。 首先,Spring框架提供了`JavaMailSender`...

    Spring mail发送邮件实例

    ### Spring Mail 发送邮件实例详解 #### 一、Spring Mail 概述 Spring Mail 是 Spring 框架中用于处理电子邮件发送的一个模块。它提供了一种简单的方式来进行邮件的发送,支持多种邮件发送协议,例如 SMTP 等,...

    spring集成邮件服务

    总的来说,Spring集成邮件服务使得在Java应用中发送邮件变得简单且灵活。通过合理的配置和编程,你可以实现各种复杂的邮件需求,比如触发式邮件、批量邮件、包含动态内容的邮件等。这个过程涉及的技术和概念对于任何...

    Spring邮件发送实例

    以下是对Spring邮件发送实例的详细讲解。 首先,我们需要在项目中引入Spring Mail的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.springframework.boot ...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    总之,这个实例结合了Struts2、Spring和Mybatis的强大功能,提供了一个完整的邮件发送系统,包括邮件的创建、附件上传和数据库操作。对这个实例的学习和实践,可以帮助开发者深入理解Java企业级应用的开发流程和技巧...

    spring发送邮件所需jar包

    总结来说,Spring发送邮件需要`spring-context`、`spring-context-support`、`java-mail`、`javax.activation`这些核心库,以及可能需要的测试库`junit`。理解和掌握这些库的作用及如何配置它们,对于实现Spring中的...

    用spring发送邮件

    本教程将详细讲解如何使用Spring发送邮件,以及在遇到问题时如何排查。 首先,我们需要在Spring项目中引入邮件服务相关的依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.spring...

    spring定时发送邮件

    Spring Mail提供了一个简单易用的API,使得在Java应用中发送邮件变得轻松。它支持SMTP(简单邮件传输协议)和JavaMail API,可以处理HTML邮件、附件等复杂需求。要使用Spring Mail,你需要在项目中引入相应的依赖,...

    spring JavaMailSenderImpl 发送邮件 java

    综上所述,Spring的JavaMailSenderImpl提供了一种简单易用的方式,在Java应用程序中发送电子邮件。配合JavaMail API,我们可以实现复杂的邮件功能,如添加附件、设置HTML格式的正文等。在实际项目中,根据具体需求...

    spring整合freemarker发送邮件例子

    在这个场景中,Spring 提供了电子邮件服务的抽象层,使得发送邮件变得简单。 2. **FreeMarker**:FreeMarker 是一个基于模板的 Java 模板引擎,常用于生成动态 HTML、XML 或其他文本格式的文档。在这里,我们使用 ...

    Spring发送邮件

    在Java编程领域,Spring框架是广泛应用的开源框架,它提供了许多功能,其中之一就是发送电子邮件。SpringMail是Spring框架的一个扩展,专门用于简化邮件发送过程。本文将深入探讨如何使用SpringMail来实现邮件发送...

    使用Spring Boot 开发支持多附件邮件发送微服务平台代码

    本项目聚焦于使用Spring Boot来开发一个支持多附件邮件发送的微服务平台。这个平台可以方便地集成到各种业务场景中,例如发送报告、通知或者用户验证邮件。 首先,我们需要了解Spring Boot的邮件服务模块——`...

    spring定时器简单实例

    在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等周期性工作。下面我们将详细探讨Spring定时器的使用方法和相关知识点。 1. **什么是Spring Task(Spring定时任务)**: Spring Task是Spring ...

    Spring mvc 发送邮件功能

    在Spring MVC框架中,实现邮件发送功能通常涉及配置Spring的JavaMailSender接口和使用模板引擎如FreeMarker来创建动态邮件内容。以下是一个详细的步骤指南: 1. **依赖库**: - `javax.mail`:这是Java邮件API的...

Global site tag (gtag.js) - Google Analytics