`

spring mail

阅读更多
[color=orange][size=large]Spring mail邮件发送
Spring提供了一个发送电子邮件的高级抽象层,它向用户屏蔽了底层邮件系统的一些细节,同时负责低层次的代表客户端的资源处理。Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender和 封装了简单邮件的属性如from, to,cc, subject, text的值对象叫做SimpleMailMessage。

  1、我们定义一个发送邮件的接口:
OrderManager.java 

1 public interface OrderManager extends BaseManager{ 
2  /** 
3  *email,要发送的邮件地址; 
4  *Code:激活码 
5  */ 
6  public void placeOrder(String email); 
7 } 

  2、我们需要对该接口进行实现的方法:
OrderManagerImpl.java 

1 import javax.mail.Message; 
2 import javax.mail.MessagingException; 
3 import javax.mail.internet.InternetAddress; 
4 import javax.mail.internet.MimeMessage; 
5 import org.springframework.mail.MailException; 
6 import org.springframework.mail.javamail.JavaMailSender; 
7 import org.springframework.mail.javamail.MimeMessagePreparator; 
字串6 


8 import service.OrderManager; 
9 
11 public class OrderManagerImpl extends BaseManagerImpl implements OrderManager { 
字串2 

字串2 


12 
13  private JavaMailSender mailsender; 
14  private MyMailMessage message; 
15 
16 
17  public void setMessage(CityMailMessage message) 
18  { 
19   this.message = message; 
20  } 
21  public void setMailsender(JavaMailSender mailsender) { 
22   this.mailsender = mailsender; 
23  } 
24  public void placeOrder(final String email) { 
25 
26 
27   MimeMessagePreparator preparator = new MimeMessagePreparator() { 
28   public void prepare(MimeMessage mimeMessage) throws MessagingException { 
29    mimeMessage.setRecipient(Message.RecipientType.TO, 
30    new InternetAddress(email)); 
31    mimeMessage.setFrom(new InternetAddress(message.getFrom())); 
32    /**转换编码为GBK*/ 
33    mimeMessage.setSubject(message.getSubject(),"GBK"); 
36    mimeMessage.setText(email+"<br>"+message.getSubject()+message.getText(),"GBK"); 
37 
38   } 
39  }; 
40  try{ 
41   mailsender.send(preparator); 
42  } 
43  catch(MailException ex) { 字串9 字串9 
44   //log it and go on 
45   System.err.println(ex.getMessage()); 
46  } 
47 } 
48 } 

  3、spring配置发送email的
applicationContext-email.xml 

1 <?xml version="1.0" encoding="UTF-8"?> 
2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
3 "http://www.springframework.org/dtd/spring-beans.dtd"> 
4 
5 <beans> 
6  <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
7  <property name="host"> 
8   <value>smtp.163.com</value> 
9  </property> 
10 <property name="username"> 
11  <value>username</value> 
12 </property> 
13 <property name="password"> 
14  <value>password</value> 
15 </property> 
16 <property name="javaMailProperties"> 
17  <props> 
18   <prop key="mail.smtp.auth">true</prop> 
19   <prop key="mail.smtp.timeout">25000</prop> 
20  </props> 
21 </property> 
22 </bean> 
23 
24 <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"> 
字串3 
字串2 
25  <property name="from"> 
26   <value>Email</value> 
27  </property> 
28  <property name="subject"> 
29   <value>标题</value> 
30  </property> 
31  <property name="text"> 
32   <value>内容</value> 
33  </property> 
46 </bean> 
47 
48 <bean id="orderManager" class="cn.cityyouth.service.impl.OrderManagerImpl"> 
49  <property name="mailsender"> 
50   <ref bean="mailSender" /> 
51  </property> 
52  <property name="message"> 
53   <ref bean="mailMessage" /> 
54  </property> 
55 </bean> 
56 
57 </beans> 

  4、最后配置自己的jsp面以及action

1
package cn.cityyouth.web.action; 
2 
3 import javax.servlet.http.HttpServletRequest; 
4 import javax.servlet.http.HttpServletResponse; 
5 import org.apache.struts.action.ActionForm; 
6 import org.apache.struts.action.ActionForward; 
7 import org.apache.struts.action.ActionMapping; 
8 import org.apache.struts.action.ActionMessage; 
9 import org.apache.struts.action.ActionMessages; 字串6 
字串8 

10 import com.test.service.OrderManager; 
11 
12 public class SendMailAction extends BaseAction { 
13 
14  /** 
15  * Method execute 
16  * 
17  * @param mapping 
18  * @param form 
19  * @param request 
20  * @param response 
21  * @return ActionForward 
22  */ 
23 public ActionForward execute(ActionMapping mapping, ActionForm form, 
24 HttpServletRequest request, HttpServletResponse response) { 
25  OrderManager omi=(OrderManager)this.getBean("orderManager"); 
26  String useremail="123@163.com"; 
27  omi.placeOrder(useremail); 
28 } 
29 } 

  到此所有的开发以结束。

  Sring邮件抽象层的主要包是:org.springframework.mail 包。它包含叫MailSender为发送邮件的核心接口和包含简单邮件属性例如from,to,cc,subject,text叫SimpleMailMessage的值对象. 这个包也包含一个检查异常的层次,它支持一个更高级别的抽象超过低级别的邮件系统异常伴随根异常存在MailException. 请参考JavaDocs为更多的信息杂邮件异常层次。

  Spring也支持一个MailSender的专用于JavaMail特征例如MIME消息子接口,命名为org.springframework.javamail.JavaMailerSener。它也支持一个为JavaMail MIME信息的准备回调接口,命名为org.springframework.mail.JavaMail.MimeMessagePreparator.
字串7



Spring Mail
//修改用户名密码即可,提示:有些邮箱不支持smtp,请大家多换几个试试,spring mail 服务配置进来
 <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.163.com" /> <property name="port" value="25 ... 

代码
1. //修改用户名密码即可,提示:有些邮箱不支持smtp,请大家多换几个试试,spring mail 服务配置进来  
2.
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">   
3.	        <property name="host" value="smtp.163.com" />    
4.	        <property name="port" value="25" />    
5.	        <property name="username" value="****@163.com" />    
6.	        <property name="password" value="*******" />    
7.	        <property name="javaMailProperties">   
8.	            <props>   
9.	                <prop key="mail.smtp.auth">true</prop>    
10.	                <prop key="mail.smtp.timeout">25000</prop>    
11.	            </props>   
12.	        </property>   
13.	    </bean>   
14.	    // 邮件模板   
15.	    <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">   
16.	     <property name="resourceLoaderPath" value="WEB-INF/"></property>   
17.	    <!--    
18.	        <property name="velocityProperties">   
19.	            <value>resource.loader=class class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader</value>    
20.	        </property>   
21.	     -->   
22.	    </bean>   
23.	  
24.	// 将发送邮件和邮件模板都注入到需要发送邮件的业务层类   
25.	  
26.	<bean id="**Service" class="****.service.impl.***">   
27.	        <property name="***DAO">   
28.	            <ref bean="***DAO"/>   
29.	        </property>   
30.	        <property name="mailSender" ref="mailSender" />    
31.	        <property name="velocityEngine" ref="velocityEngine" />    
32.	    </bean>   
33.	  

34.  
35.  
36. 业务层方法  
37.
public boolean sendEmail(final User user) {   
38.	        System.out.println("user.email===="+user.getEmail());   
39.	        MimeMessagePreparator preparator = new MimeMessagePreparator() {   
40.	            public void prepare(MimeMessage mimeMessage) throws Exception {   
41.	                MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true,"UTF-8");   
42.	                message.setSubject("标题");   
43.	                message.setTo(user.getEmail());   
44.	                message.setFrom("***@163.com");   
45.	                Map model = new HashMap();   
46.	                model.put("user", user);   
47.	                String text = VelocityEngineUtils.mergeTemplateIntoString(   
48.	                velocityEngine, "registration-confirmation.vm","UTF-8", model);   
49.	                message.setText(text, true);   
50.	            }   
51.	        };   
52.	        try{   
53.	            this.mailSender.send(preparator);   
54.	            return true;   
55.	        }catch(MailException e) {   
56.	            System.out.println("没有这个邮箱");   
57.	            return true;   
58.	        }   
59.	    }   

60. //将模板registration-confirmation.vm 存放在resourceLoaderPath的配置路径下(WEB-INF/) 模板见附件  
61. //依赖javamail.jar,   j2ee4和j2ee5也有关系,使用时注意 


<?xml version="1.0" encoding="utf-8"?>

<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	
	<!-- Spring 邮件发送者 -->
	<bean id="mailSender"
		class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="protocol" value="smtp" />
		<property name="host" value="smtp.163.com" />
		<property name="port" value="25" /><!-- SSL则端口为465/587 -->
    	<property name="username" value="im_mysns@sina.com" />
    	<property name="password" value="iloveyou" />
		<property name="javaMailProperties">
    		<props>
    			<prop key="mail.debug">true</prop>
    			<prop key="mail.smtp.auth">true</prop>
    			<prop key="mail.smtp.starttls.enable">true</prop>
    			<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
    		</props>
    	</property>
	</bean>
	
	<!-- FreeMarker的html邮件格式模板 -->
	<bean id="mailFreeMarker"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">2000</prop>
				<prop key="default_encoding">utf-8</prop>
				<prop key="locale">zh_CN</prop>
			</props>
		</property>
		<property name="templateLoaderPath" value="classpath:com/mysns/module/mail/htmlskin" />
	</bean>
	
	<!-- 发送邮件服务 -->
	<bean id="mailService" class="com.mysns.module.mail.service.MailService">
		<property name="mailSender" ref="mailSender" />
		<property name="sender" value="im_mysns@sina.com" />
		<property name="encoding" value="utf-8" />
		<property name="taskExecutor" ref="taskExecutor" />
		<property name="freeMarkerConfigurer" ref="mailFreeMarker" />
		<property name="templateFile" value="view_mail_welcome.ftl" />
	</bean>
</beans>

[/size][/color]
分享到:
评论

相关推荐

    springMail

    SpringMail 是一个基于 Java 的库,它允许开发者在 Spring 框架中轻松地发送电子邮件。这个库使得处理复杂的邮件任务变得简单,包括发送带有正文、附件以及多种内容类型的邮件。下面将详细介绍 SpringMail 的使用...

    spring mail的使用

    Spring Mail是Spring框架的一部分,它提供了一种在Java应用程序中发送电子邮件的能力。通过Spring的抽象层,我们可以方便地集成各种邮件服务提供商,如Gmail、Yahoo等,而无需直接处理复杂的JavaMail API。本篇文章...

    springmail架包

    SpringMail 是一个基于 Java 的库,它为使用 JavaMail API 发送电子邮件提供了便捷的抽象层。这个框架使得在 Spring 应用程序中集成邮件服务变得简单。本文将深入探讨 SpringMail 的核心概念、配置以及如何在实际...

    spring mail 发送html

    在IT行业中,Spring框架是一个广泛使用的Java应用开发框架,它提供了丰富的功能,包括Spring Mail模块,用于发送电子邮件。本文将详细讲解如何利用Spring Mail发送HTML格式的邮件,以及如何发送普通文本、附件和...

    spring mail通过代理发送邮件

    标题中的“spring mail通过代理发送邮件”涉及到的是Spring框架中处理电子邮件发送的功能,尤其是在网络环境有限制或需要通过代理服务器的情况下。Spring Mail是Spring Framework的一个扩展模块,它提供了与JavaMail...

    使用springMail发送带附件的email

    SpringMail是一个在Java应用中发送电子邮件的库,它利用了JavaMail API的简便性和灵活性。在本项目中,我们将深入探讨如何使用SpringMail发送带有附件的电子邮件。首先,我们需要了解几个核心概念: 1. **JavaMail ...

    利用 spring mail 通过 gmail(SSL) 发邮件

    Spring Mail是一个Java库,它简化了通过JavaMail API发送电子邮件的过程。本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果...

    spring mail 实例

    Spring Mail是Spring框架的一个扩展,专门用于发送电子邮件。本实例将深入探讨如何在Spring应用中集成并使用Spring Mail进行邮件发送。 首先,我们需要理解Spring Mail的核心组件`JavaMailSender`,这是一个接口,...

    Spring mail发送邮件实例

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

    spring mail 的发送

    在`springmail2`这个示例项目中,可能包含了一个简单的Spring Boot应用,演示了如何使用Spring Mail发送邮件。这个示例可能包括一个`Main`类,启动Spring Boot应用,并调用`MailService`发送一封测试邮件。代码可能...

    SpringMail发邮件

    SpringMail是Spring框架的一个扩展,它为Java应用提供了一个简单且强大的邮件发送功能。通过集成SpringMail,开发者可以轻松地在应用程序中实现电子邮件的发送,无论是普通的文本邮件、HTML格式的邮件,还是带有附件...

    spring mail 带附件

    Spring Mail 是一个强大的Java库,用于发送电子邮件,包括带有附件的功能。在Spring框架中,它通过集成JavaMailSender接口提供了一种简洁的方式来处理邮件服务。本文将深入探讨如何使用Spring Mail发送带有附件的...

    java mail,spring mail

    Java Mail和Spring Mail是Java开发中用于处理电子邮件的两个关键库。它们允许开发者在应用程序中实现发送、接收和处理电子邮件的功能。在这个实例中,我们主要关注如何使用Java Mail API和Spring Mail来实现实时的多...

    SpringMail

    **SpringMail 深度解析** SpringMail 是一个在 Java 应用中发送电子邮件的库,它是 Spring 框架的一个扩展,使得在基于 Spring 的应用程序中集成邮件服务变得非常简单。SpringMail 提供了一种方便的方式来配置和...

    Spring mail 发送邮件

    Spring Mail 是一个在Java应用程序中发送电子邮件的简单且强大的库,它是Spring框架的一部分。通过集成Spring Mail,开发者可以轻松地将邮件发送功能整合到他们的应用中。本篇将深入探讨如何使用Spring Mail发送邮件...

    springmail架包及各种邮件发送代码

    SpringMail 是一个基于Java的库,用于简化电子邮件的发送任务。它封装了JavaMail API,提供了更简洁的接口,使得开发者在Spring框架中发送邮件变得容易。本篇将深入探讨SpringMail的使用方法以及各种邮件的发送代码...

Global site tag (gtag.js) - Google Analytics