`
wuyaweiwude
  • 浏览: 121904 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类

Spring中的邮件发送

阅读更多
Spring的邮件发送操作简单,使用方便,通过xml文件中bean的配置,可以进一步简化操作。
除了Spring的相关jar包外,还需要mail.jar(在使用MyEclipse 6.0时,web工程引用的J2EE 1.4 Libraries中的mail.jar会引起jar包冲突,导致发送邮件时授权验证失败,需将此jar包引用去除)。

1.获取邮件发送器

1)代码方式:
JavaMailSenderImpl sender = new JavaMailSenderImpl();
	// 设定Mail Server及端口号
	sender.setHost("smtp.163.com");
	sender.setPort(xxx);

	// SMTP验证时,需要用户名和密码
	sender.setUsername("xxx");
	sender.setPassword("xxx");

2)xml中bean配置方式(相关配置信息放置在属性文件中):
	<!-- 邮件发送 -->
	<bean id="mailSender"
		class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host">
			<value>${email.host}</value>
		</property>
		<property name="port">
			<value>${email.port}</value>
		</property>
		<property name="username">
			<value>${email.username}</value>
		</property>
		<property name="password">
			<value>${email.password}</value>
		</property>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">true</prop>
             <!—自定义的属性,可在代码中获取 -->
				<prop key="sendFrom">${email.sendFrom}</prop>
			</props>
		</property>
	</bean>

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();

	// 获取邮件发送器
	JavaMailSenderImpl sender = (JavaMailSenderImpl) wac.getBean("mailSender");
	// 获取配置的发送人邮件地址
	String sendFrom = (String) sender.getJavaMailProperties().get("sendFrom");

2.邮件对象的创建

1)简单文本邮件
   public static void main(String[] arg) throws Exception {
	JavaMailSenderImpl sender = new JavaMailSenderImpl();
	//设定Mail Server及端口号
	sender.setHost("smtp.163.com");
	sender.setPort(xxx);

	// SMTP验证时,需要用户名和密码
	sender.setUsername("xxx");
	sender.setPassword("xxx");

	//建立简单文本邮件
	SimpleMailMessage mailMessage = new SimpleMailMessage();

	//设定收件人、寄件人、主题与内文
	mailMessage.setFrom("xxx");
	mailMessage.setTo("xxx");//数组发送给多个联系人
	mailMessage.setSubject("Test");
	mailMessage.setText("This is a test mail");

	// 传送邮件
	sender.send(mailMessage);
	System.out.println("邮件传送OK..");
    }

2)可带附件邮件
    public static void main(String[] arg) throws Exception {
	JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
	// 设定Mail Server及端口号
	senderImpl.setHost("smtp.163.com");
	senderImpl.setPort(xxx);	
	senderImpl.setUsername("xxx");
	senderImpl.setPassword("xxx");
	
	//创建Mime邮件(可包含附件、设置为html格式)
	MimeMessage mailMessage = senderImpl.createMimeMessage();	
	/*
	 *Create a new MimeMessageHelper for the given MimeMessage, 
	 *in multipart mode (supporting alternative texts, inline elements and attachments) if requested. 
	*/
	MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
	
	// 设定收件人、寄件人、主题与内文
	messageHelper.setFrom("xxx");
	messageHelper.setTo("xxx");
	messageHelper.setSubject("Test");
	// true 表示启动HTML格式的邮件
	messageHelper.setText(
		"<html><head></head><body><h1>hello!</h1></body></html>", true);
	
	File file = new File("d:/test.xlsx");
	if (file.exists()) {
	    // 添加附件并对文件名处理,避免中文乱码
	    FileSystemResource fileAdd = new FileSystemResource(file);
	    messageHelper.addAttachment(MimeUtility.encodeWord(fileAdd.getFilename()),
		    fileAdd);
	}
	
	// 传送邮件
	senderImpl.send(mailMessage);
	
	System.out.println("邮件传送OK..");
    }

3)邮件内容使用模板

在创建html邮件时可以使用模板技术生成邮件正文内容,例中使用FreeMarker,添加jar包文件freemarker.jar。
创建模板文件src/mailTemplate/mailTemplate.ftl,内容如下:
<html>   
   <head>   
      <meta http-equiv="content-type" content="text/html;charset=utf8">   
   </head>   
   <body>   
 	  ${user} 您好!<br/>
           。。。。。。。
       <br/><br/>
       ---------------------------------
       <br/>
       ${currentDate}<br/> 
       联系人:刘德华<br/>
       电话  :18688886666<br/>
       邮箱  :liudehua@163.com<br/>
   </body>   
</html>  

发送邮件业务类中FreeMarker配置类注入:
  private FreeMarkerConfigurer freeMarker;
    
    public void setFreeMarker(FreeMarkerConfigurer freeMarker) {
        this.freeMarker = freeMarker;
    }

xml中对应bean配置:
	<bean id="freeMarker"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<!--指定模板文件目录-->
		<property name="templateLoaderPath"
			value="classpath:mailTemplate" />
		<!-- 设置FreeMarker环境属性-->
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒-->
				<prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
				<prop key="locale">zh_CN</prop><!-- 本地化设置-->
			</props>
		</property>
	</bean>
根据模板获取邮件正文内容方法:
    //根据模板文件获取邮件内容
    private String getEmailContent() {
	try {
	    //获取模板文件
	    Template template = freeMarker.getConfiguration().getTemplate("mailTemplate.ftl");
	    //对模板中的可变信息进行配置
	    Map<String, String> map = new HashMap<String, String>();	   
    map.put("user","xxx");
	    map.put("currentDate",Util.getNowDate("yyyy-MM-dd"));
	    
	    String content =  FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
	    return content;
	    
	} catch (TemplateException e) {
	    logger.error("Error while processing FreeMarker template ", e);
	} catch (FileNotFoundException e) {
	    logger.error("Error while open template file ", e);
	} catch (IOException e) {
	    logger.error("Error while generate Email Content ", e);
	}
	return "";
    }

其它操作可参考:http://www.open-open.com/lib/view/open1338109120604.html
分享到:
评论

相关推荐

    spring各种邮件发送

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

    Spring Boot整合邮件发送并保存历史发送邮箱

    Spring Boot整合邮件发送并保存历史发送邮箱 项目描述 项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件...

    java发送邮件 spring发送邮件

    通常,Spring框架的`spring-context`模块包含了`JavaMailSender`接口,而`javaee-api`或`javax.mail`库则提供了邮件发送的具体实现。确保在`pom.xml`(如果是Maven项目)或`build.gradle`(Gradle项目)中添加相应的...

    java 发送邮件 spring发送邮件Mail

    接下来,我们可以创建一个服务类来处理邮件发送的具体逻辑,使用`JavaMailSender`发送邮件: ```java @Service public class EmailService { @Autowired private JavaMailSender mailSender; public void ...

    spring发送邮件demo

    这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context-...

    Spring 高效批量邮件发送

    在本话题中,我们将探讨“Spring高效批量邮件发送”这一技术点,这通常涉及到Spring框架中的邮件服务模块以及如何优化邮件发送的效率。 首先,Spring框架的MailSender接口是处理邮件发送的核心组件。它提供了send()...

    Spring邮件发送

    **Spring邮件发送** 在Java开发中,Spring框架提供了一种简单而强大的方式来发送电子邮件。Spring的`JavaMailSender`接口以及其实现类`SimpleMailMessage`和`MailMessage`,使得开发者能够轻松地集成邮件服务到应用...

    Spring邮件发送源码

    Spring框架在Java应用开发中扮演着重要角色,尤其在处理各种集成任务时,如数据库操作、定时任务以及我们的关注点——邮件发送。Spring提供了一套完整的邮件服务支持,通过其`org.springframework.mail`包,我们可以...

    struts spring 实现简单的邮件发送

    通过学习和理解这个项目,开发者可以了解如何在实际项目中整合Struts2和Spring进行邮件发送,为自己的应用添加类似功能。由于没有具体的代码示例,这里只提供了实现思路和步骤,具体实现细节还需要参考项目中的源...

    Spring邮件发送服务(java邮件发送)

    下面将详细阐述Spring邮件发送服务的核心概念和技术细节。 首先,我们需要配置SpringMail的相关设置。这通常通过一个XML配置文件完成,例如`springmail_config.xml`。在这个文件中,我们定义了邮件服务器的相关属性...

    Spring进阶—如何用Java代码实现邮件发送

    1. 添加Spring核心库和相关的邮件发送库(如JavaMail API)到项目依赖中。 2. 在Spring配置文件(如`email-163.xml`)中配置邮件服务器的相关信息,如用户名、密码、SMTP服务器地址等。 3. 在代码中,使用Spring的`...

    spring实现邮件发送功能+ssm+javamil

    在本文中,我们将深入探讨如何使用Spring框架实现邮件发送功能,特别关注SSM(Spring、Spring MVC、MyBatis)和JavaMail的整合。对于初学者来说,这是一个基础且易于理解的教程,只需要遵循简单的步骤就能成功实现...

    spring定时发送邮件

    实现这一功能,你需要在Spring配置文件中定义一个`TaskScheduler`或`ThreadPoolTaskScheduler`,然后创建一个实现了`Runnable`接口的任务类,最后在任务类中定义你的邮件发送逻辑。 接下来,我们来看Spring Mail。...

    spring发送邮件所需jar包

    以下是一些核心的JAR包及其在Spring邮件发送中的作用: 1. **spring-context**: 这是Spring框架的核心模块,包含环境感知、依赖注入(DI)、事件传播、AOP代理等核心功能。在邮件发送中,它提供了一个`MailSender...

    spring中邮件及定时任务

    关于压缩包中的文件"spring_扩展_邮件及定时任务_2",它很可能包含了示例代码或者配置文件,用于演示如何在Spring项目中实现邮件发送和定时任务。这些文件可能包括了Java源代码、XML配置文件或者YAML配置文件,你...

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

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

    Spring Boot邮件发送(powernode document)(源代码)

    Spring Boot邮件发送(powernode document)(源代码) 1.概述 2.最佳实践 2.1创建项目引入依赖(mail) 2.2修改yml配置文件 2.3编写测试发送邮件 2.4 测试结果 2.4.1 发送基本内容 2.4.2 发送复杂内容 我们使用java...

Global site tag (gtag.js) - Google Analytics