`
wangshiyang
  • 浏览: 69896 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring mail的使用

阅读更多
因为项目的要求,所以做了个邮件发送的功能,但是使用javaMail的话太麻烦了,还需要自己去适配服务器,进行验证,所以就选用了spring的mail功能.因为现在的框架是ssh的,所以就把他做成了模块.下面开始.
首先需要保证要有mail.jar,activation.jar,spring.jar.
然后就是对spring的集成,发代码吧,首先是spring的配置文件,因为我使用了properties文件,所以直接读取文件,配置文件这里要注意下,每条属性后面一定不要跟空格,不然会就会找不到smtp服务器,我就是在这里中招的!
#user is  the sender name;
#password is the sender password;
#auth is allow grant for the mailServices.  default value is true
#smtp.com is the mailService's address
mail.user=***
mail.password=****
mail.auth=true
smtp.com=smtp.163.com
mail.timeout=25000

<?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-2.5.xsd">
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>
					classpath*:mailSend.properties
				</value>
			</list>
		</property>
	</bean>

	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host">
			<value>${smtp.com}</value>
		</property>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">${mail.auth}</prop>
				<prop key="mail.smtp.timeout">${mail.timeout}</prop>
				<prop key="mail.smtp.from">${mail.user}</prop>
			</props>
		</property>
		<property name="username">
			<value>${mail.user}</value>
		</property>
		<property name="password">
			<value>${mail.password}</value>
		</property>
	</bean>

	<bean id="mailService" class="com.magus.mail.service.impl.MailServiceImpl">
		<property name="mailSend">
			<ref local="mailSender" />
		</property>
	</bean>

	<bean id="mailAction" class="com.magus.mail.action.MailAction">
		<property name="mailService">
			<ref local="mailService" />
		</property>
		
	</bean>
</beans>
下面的是我两个类是实现:MailService类
import javax.mail.internet.MimeMessage;

import org.springframework.mail.SimpleMailMessage;


public interface  MailService {
	public void sendMail(SimpleMailMessage smm);
	public void sendMail(MimeMessage  mm);
	public MimeMessage getMimeMessage();
}

MailServiceImpl类
import javax.mail.internet.MimeMessage;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

import com.magus.mail.service.MailService;

public class MailServiceImpl implements MailService {
	private JavaMailSender mailSend;
	
	public JavaMailSender getMailSend() {
		return mailSend;
	}

	public void setMailSend(JavaMailSender mailSend) {
		this.mailSend = mailSend;
	}

	@Override
	public void sendMail(SimpleMailMessage smm) {
		mailSend.send(smm);
	}

	@Override
	public void sendMail(MimeMessage mm) {
		mailSend.send(mm);
	}

	@Override
	public MimeMessage getMimeMessage() {
		return mailSend.createMimeMessage();
	}

}

发送邮件的action类:MailAction
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.List;

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

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;

import com.magus.mail.service.MailService;

public class MailAction {
	private MailService mailService;
	
	/**
	 * 普通邮件发送,sendTo收件者地址,sendSubject邮件主题,sendContent邮件内容<br/>
	 * 注:发送者需要在mailSend.properties文件里面配置<br/>
	 * @param sendTo
	 * @param sendSubject
	 * @param sendContent
	 * @return
	 */
	public void sendMail(String sendTo,String sendSubject,String sendContent){
		SimpleMailMessage smm=new SimpleMailMessage();
		smm.setTo(sendTo);
		smm.setSubject(sendSubject);
		smm.setText(sendContent);
		mailService.sendMail(smm);
	}
	
	/**
	 * 带HTML格式的邮件发送,sendTo收件者地址,sendSubject邮件主题<br/>
	 * sendContent邮件内容,flag为是否发送HTML格式邮件:true是,false不是<br/>
	 * 注:发送者需要在mailSend.properties文件里面配置 <br/>
	 * @param sendTo
	 * @param sendSubject
	 * @param sendContent
	 * @param flag
	 * @return
	 */
	public void sendMailHtml(String sendTo,String sendSubject,String sendContent,boolean flag){
		MimeMessage mimiMail=mailService.getMimeMessage();
		try {
			MimeMessageHelper mHelp=new MimeMessageHelper(mimiMail,true,"utf-8");
			mHelp.setTo(sendTo);
			mHelp.setSubject(sendSubject);
			mHelp.setText(sendContent,flag);
			mailService.sendMail(mimiMail);
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 带HTML格式的邮件发送,sendTo收件者地址,sendSubject邮件主题<br/>
	 * sendContent邮件内容,flag为是否发送HTML格式邮件:true是,false不是<br/>
	 * List<File>表示需要发送的附件<br/>
	 * 注:发送者需要在mailSend.properties文件里面配置 <br/> 
	 * @param sendTo
	 * @param sendSubject
	 * @param sendContent
	 * @param flag
	 * @param l
	 * @return
	 */
	public void sendMailHtmlByAttach(String sendTo,String sendSubject,String sendContent,boolean flag,List<File> f){
		MimeMessage mimiMail=mailService.getMimeMessage();
		try {
			MimeMessageHelper mHelp=new MimeMessageHelper(mimiMail,true,"utf-8");
			mHelp.setTo(sendTo);
			mHelp.setSubject(sendSubject);
			mHelp.setText(sendContent,flag);
			for(int i=0;i<f.size();i++){
				File file=f.get(i);
				String filename=file.getName();
				mHelp.addAttachment(MimeUtility.encodeWord(filename), file);
			}
			mailService.sendMail(mimiMail);
		} catch (MessagingException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public MailService getMailService() {
		return mailService;
	}

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

这些做完之后基本上就已经成型了!
给出个测试方法
public static void main(String[] args) {
		
		args=new String[]{"/mail-service.xml"};
		BeanFactory factory=new ClassPathXmlApplicationContext(args);
		MailAction wiq=(MailAction) factory.getBean("mailAction");
		File f=new File("H:\\path.txt");
		List<File> l=new ArrayList<File>();
		l.add(f);
		wiq.sendMailHtmlByAttach("*****@qq.com", "test", "this is a test mail",false,l);
}


这个模块胜在灵活度高,可以在这个基础上安排定时器(例如定时发送邮件),下面也有代码可以下载

有疑问或者错误的请指出.
分享到:
评论

相关推荐

    Spring mail 使用多个账号发送带有附件的HTML邮件

    总结,使用Spring Mail发送带有附件的HTML邮件是一项常见的任务,特别是当需要支持多个账号时,需要精心设计和配置。通过理解Spring Mail的工作原理和JavaMail API,开发者可以有效地实现代理邮件发送,并确保邮件的...

    springmail架包

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

    springMail

    下面将详细介绍 SpringMail 的使用及其核心概念。 1. **SpringMail 的集成** 在 Spring 应用程序中集成 SpringMail 需要在配置文件中设置 SMTP 服务器的相关参数,如主机名、端口、用户名和密码。这些可以通过 `...

    spring mail

    Spring Mail 提供了一种优雅的方式来配置和使用JavaMail API,而无需直接处理复杂的JavaMail API细节。下面将详细阐述Spring Mail的核心概念、配置、使用方法以及常见应用场景。 一、核心概念 1. JavaMail API:...

    使用springMail发送带附件的email

    在本项目中,我们将深入探讨如何使用SpringMail发送带有附件的电子邮件。首先,我们需要了解几个核心概念: 1. **JavaMail API**: 这是Java平台上的一个标准API,用于处理邮件相关任务,如创建、发送和接收邮件。它...

    spring mail通过代理发送邮件

    要使用Spring Mail,你需要在项目中引入`spring-context-support`依赖,这个依赖包含了对邮件服务的支持。接着,你需要配置一个`JavaMailSender`实例,该实例是Spring Mail的核心接口,负责邮件的发送工作。配置通常...

    spring mail 发送html

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

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

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

    spring mail 实例

    本实例将深入探讨如何在Spring应用中集成并使用Spring Mail进行邮件发送。 首先,我们需要理解Spring Mail的核心组件`JavaMailSender`,这是一个接口,提供了发送邮件的基本方法。要使用`JavaMailSender`,我们需要...

    SpringMail使用过程中的报错解决办法

    SpringMail使用过程中的报错解决办法 1、Unable to locate provider for protocol: smtp –&gt;缺少依赖造成的 &lt;groupId&gt;javax.mail &lt;artifactId&gt;mail &lt;version&gt;1.4 &lt;groupId&gt;javax.activation &lt;artifactId&gt;...

    Spring mail发送邮件实例

    在开始使用 Spring Mail 之前,我们需要做一些准备工作: 1. **添加依赖**:首先需要在项目中引入 Spring Mail 的依赖。通常情况下,如果项目是基于 Maven 或 Gradle 构建的话,可以在 `pom.xml` 或 `build.gradle`...

    spring mail 的发送

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

    spring + mail + 发送邮件完整 demo (含注释)

    本教程将围绕"Spring + Mail"的组合,结合Freemarker模板引擎,提供一个完整的发送邮件的Demo。 首先,我们需要在项目中添加相关的依赖。Spring框架通常与Spring Boot一起使用,这样可以简化配置。在`pom.xml`或`...

    spring-boot-mail

    spring.mail.default-encoding=UTF-8 #电子邮件地址 spring.mail.host=smtp.126.com #Application spring.application.name=SEND-MAIL #授权密码 spring.mail.password=password #邮箱服务器默认端口 spring.mail....

    java mail,spring mail

    在这个实例中,我们主要关注如何使用Java Mail API和Spring Mail来实现实时的多用户邮件发送。 首先,Java Mail API是一个开源库,它提供了一组与邮件服务器通信的标准Java接口。它支持多种邮件协议,如SMTP(简单...

Global site tag (gtag.js) - Google Analytics