`

SSH框架之spring整合javamail实现邮件服务

阅读更多
    邮件服务,一直是J2EE框架的一个很重要的功能组件。那么如何进行搭建这个邮件服务的组件呢,特别是你使用了spring框架的时候,如何搭建邮件服务?这是我在下面要进行说明的。
    使用spring搭建邮件服务,首先你需要对spring有一定的了解。这里,我不多说了

你找到spring的配置文件applicationContext.xml,在里面添加如下代码:
<import resource="classpath*:spring/**/*.xml" />


import进去的资源地址,是spring文件夹下面的所有以.xml结尾的文件
目录结构,你可以参考这个



下面,我们在resource/spring文件夹下面新建一个名称为:spring-mail.xml的配置文件,在里面添加如下代码
<bean id="mimeMessage" class="javax.mail.internet.MimeMessage" factory-bean="javaMailSender"  
	    factory-method="createMimeMessage" /> 


	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">   
	    <property name="host" value="smtp.sina.com" />  
	    <property name="username" value="lpf_991@sina.com" />   
	    <property name="password" value="yourpassword" />   
	    <property name="javaMailProperties">   
	        <props>   
	            <prop key="mail.smtp.auth">true</prop>   
	            <prop key="mail.smtp.host">smtp.sina.com</prop>
	            <prop key="mail.smtp.timeout">25000</prop>   
	            <!-- <prop key="mail.smtp.port">25</prop>   
	            <prop key="mail.smtp.socketFactory.port">25</prop>   
	            <prop key="mail.smtp.socketFactory.fallback">false</prop>   
	            <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
	            -->   
	        </props>   
	    </property>   
	</bean>  

	<bean id="mailService" class="com.core.base.mail.service.impl.MailServiceImpl">
		<property name="mailSender" ref="javaMailSender" /> 
		<property name="mimeMessage" ref="mimeMessage" /> 
	</bean>  


注意,我使用的是新浪的邮箱,如果你不是使用新浪邮箱,请修改host的value

这个时候,spring的配置文件就写好了,接下来,我们看看具体的java代码如何实现吧

第一个java类:MailModel
package com.core.base.mail.model;

/**
 * 邮件model
 * @author Administrator
 *
 */
public class MailModel {
	private String fromAddress;//发送人地址1个
	private String toAddresses;//接收人地址,可以为很多个,每个地址之间用";"分隔,比方说450065208@qq.com;lpf@sina.com
	private String subject;//邮件主题
	private String content;//邮件文本内容
	private String[] attachFileNames;//附件 
	public String getFromAddress() {
		return fromAddress;
	}
	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}
	public String getToAddresses() {
		return toAddresses;
	}
	public void setToAddresses(String toAddresses) {
		this.toAddresses = toAddresses;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	 
	public void setAttachFileNames(String[] attachFileNames) {
		this.attachFileNames = attachFileNames;
	}
	public String[] getAttachFileNames() {
		return attachFileNames;
	}
	
}



   【这个类是邮件的model,包含了发送邮件的一些需要的属性】

第二个类:MailServiceImpl,这个类是继承的MailService接口。具体的模式我是跟ssh框架开发差不多的结构
package com.core.base.mail.service.impl;

import java.io.File;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.log4j.Logger;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import com.core.base.mail.model.MailModel;
import com.core.base.mail.model.MailSenderInfo;
import com.core.base.mail.service.MailService;
import com.core.base.util.mail.MyAuthenticator;

public class MailServiceImpl implements MailService {

	private JavaMailSender mailSender;
	private MimeMessage mimeMessage;
	private static Logger logger = Logger.getLogger(MailServiceImpl.class);

	/**
	 * 发送html格式的,带附件的邮件
	 */
	@Override
	public void sendAttachMail(MailModel mail) {

		try {
			MimeMessageHelper mailMessage = new MimeMessageHelper(
					this.mimeMessage, true, "UTF-8");
			mailMessage.setFrom(mail.getFromAddress());// 设置邮件消息的发送者

			mailMessage.setSubject(mail.getSubject());// 设置邮件消息的主题
			mailMessage.setSentDate(new Date());// 设置邮件消息发送的时间
			mailMessage.setText(mail.getContent(), true); // 设置邮件正文,true表示以html的格式发送

			String[] toAddresses = mail.getToAddresses().split(";");// 得到要发送的地址数组
			for (int i = 0; i < toAddresses.length; i++) {
				mailMessage.setTo(toAddresses[i]);
				for (String fileName : mail.getAttachFileNames()) {
					mailMessage.addAttachment(fileName, new File(fileName));
				}
				// 发送邮件
				this.mailSender.send(this.mimeMessage);
				logger.info("send mail ok=" + toAddresses[i]);
			}
			 

		} catch (Exception e) {
			logger.error(e);
			e.printStackTrace();
		}

	}
}


通过这个servieimpl,可以实现发现邮件

最后,我们来进行一个测试,这里还要进行一个说明,项目采用的是SSH框架
为了方便,我也不考虑那么多了,当用户进行登录系统的时候,给他发一封邮件通知他。
    a.在UserAction里面,注入mailService。
package com.neweducation.user.action;

import com.core.base.action.BaseAction;
import com.core.base.mail.model.MailModel;
import com.core.base.mail.service.impl.MailServiceImpl;
import com.neweducation.user.model.UserModel;
import com.neweducation.user.service.UserService;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends BaseAction implements ModelDriven<UserModel> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private UserService userService;

	private UserModel userModel = new UserModel();
	private MailServiceImpl mailService;

	/**
	 * 登录
	 * 
	 * @return
	 */
	public String userLogin() {
		UserModel user = userService.loginJudge(userModel.getUserName(),
				userModel.getUserPass());
		if (user != null) {			 
			MailModel mm = new MailModel();
			String fileNames[] = { "e:/xx.txt" };
			mm.setAttachFileNames(fileNames);
			mm.setFromAddress("lpf_991@sina.com");
			mm.setToAddresses("450065208@qq.com;1009946392@qq.com");
			mm.setContent("在做项目的过程中,我们经常会遇到这样的情况,需要进行单点登录<br/>,也就是说用户登录一个系统的同时也登录到其他系统。<br/> ");
			mm.setSubject("这是一个spring整合javamail的测试");
			mailService.sendAttachMail(mm);
			return SUCCESS;
		} else {
			return INPUT;
		}
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public UserService getUserService() {
		return userService;
	}

	@Override
	public UserModel getModel() {
		return getUserModel();
	}

	public void setUserModel(UserModel userModel) {
		this.userModel = userModel;
	}

	public UserModel getUserModel() {
		return userModel;
	}

	public void setMailService(MailServiceImpl mailService) {
		this.mailService = mailService;
	}

	public MailServiceImpl getMailService() {
		return mailService;
	}

}


b.修改spring-bean-user.xml配置文件的内容,以实现mailService的注入
<?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:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"
	default-lazy-init="true" default-autowire="byName">


	<bean id="UserAction" class="com.neweducation.user.action.UserAction"
		scope="prototype">
		<property name="userService" ref="userService" />
		<property name="mailService" ref="mailService" />
	</bean>

	<bean id="userService" class="com.neweducation.user.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao" />		
	</bean>

	<bean id="userDao" class="com.neweducation.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	 

</beans>


自己写一个login。jsp,实现登录就可以了
  • 大小: 15.1 KB
分享到:
评论
1 楼 ht314495132 2013-03-19  
嗯,谢谢啦,差不多能做出来了

相关推荐

    SSH框架所需JAR包

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这些框架协同工作,提供了模型-视图-控制器(MVC)架构,简化了开发过程,提高了代码的可维护性和重用性。下面我们将...

    ssh初步整合实现邮件的发送和上传文件的功能的小项目

    本项目名为“ssh初步整合实现邮件的发送和上传文件的功能的小项目”,它展示了如何利用SSH框架来实现邮件发送和文件上传的核心功能,这对于日常业务流程自动化或用户互动是十分有用的。 首先,让我们详细了解一下...

    基于SSH框架消息管理系统

    这个“基于SSH框架的消息管理系统”是一个使用这三个技术栈实现的项目,旨在提供邮件管理和消息交互的功能,包括发件箱、收件箱和垃圾箱等核心模块。 **Struts2** 是MVC设计模式的一种实现,负责处理HTTP请求并将其...

    mysql-ssh框架全部jar包

    通过这些jar包,开发者可以轻松集成SSH框架,同时利用MySQL数据库、C3P0连接池进行数据交互,并利用JavaMail发送邮件,大大提升了开发效率和项目的稳定性。在实际开发中,还需要结合合适的配置文件和代码,才能将...

    购物网站ssh+javamail+sql

    总的来说,这个项目是一个基于SSH框架的完整Java购物网站,利用JavaMail进行邮件通信,使用SQL Server 2000作为数据库存储,开发环境为Eclipse 3.2,运行在Tomcat 5.0服务器上,支持JDK 6.0。它具备用户注册、邮件...

    手把手教你 ,spring定时发送邮件

    本教程将聚焦于Spring的一个实用特性——定时任务,特别是如何利用Spring集成JavaMailSender来实现定时发送邮件。我们将探讨以下知识点: 1. **Spring定时任务(Scheduled Tasks)** Spring通过`@Scheduled`注解和`...

    基于SSH的OA办公项目源码

    SSH框架结合JavaMail API,可以实现邮件的发送、接收和管理,比如系统公告发布后自动发送邮件通知相关人员。 5. **用户管理**:OA办公系统必然涉及到用户账户的管理,包括用户注册、登录、权限分配等。这些功能可以...

    ssh整合所需jar包(完整版)

    在实际开发中,还需要根据项目需求引入其他的库,比如用于邮件服务的javamail.jar,或者用于文件上传的commons-fileupload.jar等。通过合理的配置和组织,这些jar包能帮助开发者构建出强大且易于维护的Web应用。记得...

    james_mail邮件系统(SSH)

    总结来说,James_Mail 邮件系统是一个基于Java的B/S架构的邮件解决方案,通过集成Spring框架提供强大的后端服务,同时配以直观的Web界面,让用户轻松管理电子邮件。配置文件和示例资源则帮助开发者和管理员更好地...

    SSH简单示例

    对于初学者来说,这将是一个很好的实践机会,了解SSH框架如何协同工作,以及如何实现发送邮件等附加功能。通过深入学习和理解这个示例,开发者可以提升自己的Java Web开发技能,为将来构建更复杂的应用奠定基础。

    ssh项目OA系统

    SSH框架提供了多种方式,如使用JavaMail API发送邮件,使用HTTPClient进行API调用,实现系统的互联互通。 通过深入了解和掌握SSH框架在OA系统中的应用,开发者能够更好地设计和实现功能全面、高效的办公自动化系统...

    SSH所需要的jar .2

    综上所述,这个压缩包包含的jar文件涵盖了SSH框架的主要组件以及与之相关的其他库,如Java EE标准API、MySQL驱动、XML处理和邮件服务等,它们共同构成了一个基本的SSH开发环境。开发者可以利用这些库快速搭建并开发...

    分别是ssm的email和ssh的rep的完整系统、 附加数据库

    “email”可能指的是在SSM项目中集成电子邮件服务的功能,这通常涉及到JavaMail API的使用,通过SMTP协议发送邮件。JavaMail API提供了一套接口和类,用于创建、配置和发送电子邮件。开发者可以设置发件人、收件人、...

    ssh博客系统

    总结来说,SSH博客系统集成了多种关键技术,包括SSH框架的使用、文件上传、分页展示、异步处理和安全的邮箱修改密码功能,为用户提供了一个功能丰富的博客平台。对于开发者来说,这是一个很好的学习和实践Java Web...

    ssh各种jar包

    4. 其他依赖:SSH开发还涉及到其他的库,例如log4j或slf4j用于日志记录,commons-lang、commons-collections等Apache Commons库提供通用功能,jasperreports、itext等用于报表生成,javamail用于邮件服务等。...

    公文管理项目源码

    综上所述,这个公文管理项目源码通过SSH框架的高效集成和Java Mail技术的应用,构建了一个完整的公文流转平台,实现了公文的创建、审批、归档等流程的自动化,并通过邮件通知功能确保信息的实时传递。对于想要学习...

    超市管理系统(SSH)

    J2EE提供了许多标准API和服务,如Java Servlet、JavaServer Pages(JSP)、JavaMail、Java Persistence API(JPA)等,它们与SSH框架一起,构建出一个完整的、健壮的超市管理系统。 总的来说,【超市管理系统(SSH...

    compass+ssh2集成 hibernategps问题

    hibernategps问题" 暗示了这是一个关于Java开发中的技术集成问题,其中涉及到三个主要组件:Compass、SSH2(可能是Spring Security或Subversion等,但根据提供的文件列表,这里更可能是指Spring框架)、以及...

    对于SSH项目的一些经验总结

    - **邮件发送**:利用JavaMail API实现自动发送邮件的功能。 - **文件上传**:结合FCKeditor等富文本编辑器实现图片上传和文件管理功能。 - **分页查询**:使用Hibernate或MyBatis的分页查询功能,提高大数据量下的...

Global site tag (gtag.js) - Google Analytics