`

使用Spring的Mail组件发送邮件

阅读更多

          明天就回家,晚上也没什么事情,弄个SpringMail组件发邮件,不说废话,直接上代码

 

package com.iflytek.springmail;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import java.util.Properties;

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

import org.apache.commons.mail.EmailException;
import org.springframework.core.io.UrlResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
 * @author xdwang
 * 
 * @create Apr 28, 2013 9:38:58 PM
 * 
 * @email:xdwangiflytek@gmail.com
 * 
 * @description Spring Mail组件发送邮件
 * 
 */
public class SendMailBySpringMailDemo {

	/**
	 * @descrption 创建邮件发送者
	 * @author xdwang
	 * @create Apr 28, 201310:42:15 PM
	 * @return JavaMailSender
	 */
	private static JavaMailSender createJavaMailSender() {
		/*
		 * //从网上找的参考,说要添加这么多,实际测试了下,不需要这么多个 Properties properties = new
		 * Properties(); properties.setProperty("mail.debug", "true");
		 * properties.setProperty("mail.smtp.socketFactory.class",
		 * "javax.net.ssl.SSLSocketFactory");
		 * properties.setProperty("mail.smtp.socketFactory.fallback", "false");
		 * properties.setProperty("mail.smtp.socketFactory.port", "465");
		 * properties.setProperty("mail.smtp.port", "465");
		 * properties.setProperty("mail.smtp.auth", "true");
		 */
		Properties properties = new Properties();
		properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)
		properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		properties.setProperty("mail.smtp.auth", "true");

		JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
		javaMailSender.setJavaMailProperties(properties);
		javaMailSender.setUsername("xdwangiflytek@gmail.com");
		javaMailSender.setPassword("xxxxxxxx");
		javaMailSender.setHost("smtp.gmail.com");
		javaMailSender.setPort(465);
		javaMailSender.setDefaultEncoding("UTF-8");
		return javaMailSender;
	}

	/**
	 * @descrption SimpleMailMessage发送简单邮件
	 * @author xdwang
	 * @create Apr 28, 201310:42:33 PM
	 */
	public static void sendSimpleMailMessage() {
		JavaMailSender javaMailSender = createJavaMailSender();

		SimpleMailMessage mailMessage = new SimpleMailMessage();
		mailMessage.setFrom("xdwangiflytek@gmail.com");// 发送者,可选的
		mailMessage.setTo("790419465@qq.com");//接受者  
		mailMessage.setSubject("Hello,xdwang");//主题
		mailMessage.setText("哈哈,明天回家咯" + new Date());//邮件内容

		javaMailSender.send(mailMessage);
	}

	/**
	 * @descrption MimeMessage发送MIME类型邮件
	 * @author xdwang
	 * @create Apr 28, 201310:42:40 PM
	 * @throws MessagingException
	 */
	public static void sendMimeMessage() throws MessagingException {
		JavaMailSender javaMailSender = createJavaMailSender();

		MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
		// 可选的,可以用来修改显示给接收者的名字
		// helper.setFrom("xdwangiflytek@gmail.com", "xxxxxxxx");
		helper.setTo("790419465@qq.com");
		helper.setSubject("this is test");
		helper.setText("<h1>Hello</h1>", true);

		javaMailSender.send(mimeMessage);
	}

	/**
	 * @descrption 发送含附件的邮件
	 * @author xdwang
	 * @create Apr 28, 201310:42:46 PM
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException
	 * @throws MalformedURLException
	 */
	public static void sendMimeMessageAttachment() throws MessagingException, UnsupportedEncodingException,
			MalformedURLException {
		JavaMailSender javaMailSender = createJavaMailSender();

		MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		// 第二个参数设置为true,表示允许添加附件
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
		helper.setTo("790419465@qq.com");
		helper.setSubject("发送含图片附件的邮件");
		// 第二个参数为true表示需要内容为HTML格式
		helper.setText("<h1>Hello</h1>", true);
		// 需要对文件名进行转码
		helper.addAttachment(MimeUtility.encodeText("xdwang.jpg"), new File("E:\\软件大赛.jpg"));
		helper.addAttachment(MimeUtility.encodeText("baidu.gif"), new URLDataSource(new URL(
				"http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif")));

		javaMailSender.send(mimeMessage);
	}

	/**
	 * @descrption 发送HTML格式含图片的邮件
	 * @author xdwang
	 * @create Apr 28, 201310:42:56 PM
	 * @throws MessagingException
	 * @throws MalformedURLException
	 */
	public static void sendMimeMessageInline() throws MessagingException, MalformedURLException {
		JavaMailSender javaMailSender = createJavaMailSender();

		MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		// 第二个参数设置为true,表示允许添加附件
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
		helper.setTo("790419465@qq.com");
		helper.setSubject("发送含图片附件的邮件");
		// 第二个参数为true表示需要内容为HTML格式
		helper.setText("<h1>Hello</h1><br><img src='cid:fileId'><img src='cid:abc'>", true);
		helper.addInline("fileId", new File("E:\\软件大赛.jpg"));
		helper.addInline("abc", new UrlResource("http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif"));

		javaMailSender.send(mimeMessage);
	}

	public static void main(String[] args) throws EmailException, UnsupportedEncodingException, MessagingException,
			MalformedURLException {
		//sendSimpleMailMessage();
		//sendMimeMessage();
		// sendMimeMessageAttachment();
		 sendMimeMessageInline();
	}

}

 

 

通常使用的时候只需要在配置文件中定义JavaMailSender,然后注入到需要使用的类中即可,上面的XML配置为:

 

<?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"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jms="http://www.springframework.org/schema/jms"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd">
	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="smtp.gmail.com"></property>
		<property name="port" value="465"></property>
		<property name="username" value="xdwangiflytek@gmail.com"></property>
		<property name="password" value="xxxxxxxx"></property>
		<property name="defaultEncoding" value="UTF-8"></property>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.debug">true</prop>
				<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
				<prop key="mail.smtp.auth">true</prop>
			</props>
		</property>
	</bean>
</beans>

 

分享到:
评论

相关推荐

    spring mail 的发送

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

    spring各种邮件发送

    首先,Spring框架提供了`JavaMailSender`接口,它是发送邮件的核心接口。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机地址、端口、用户名、密码等,来设置邮件发送的环境。`JavaMailSender`提供了...

    spring发送邮件demo

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

    简单学习使用Spring+Velocity发送邮件

    这样,当发送邮件时,Spring会使用这些模板并替换变量,生成最终的邮件内容。 为了在Spring中集成Velocity,我们需要添加以下依赖: 1. `velocity-engine-core`:Velocity的核心库。 2. `velocity-tools-view`:...

    Spring 高效批量邮件发送

    首先,Spring框架的MailSender接口是处理邮件发送的核心组件。它提供了send()方法,可以用来发送简单的文本邮件或者带有附件的复杂邮件。为了实现批量邮件发送,我们需要创建一个邮件服务类,该类将利用MailSender...

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

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。其中,Spring Mail模块是Spring框架的一部分,它简化了通过JavaMail API发送电子邮件的过程。本文将深入...

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

    在Spring Boot应用中,你可以创建一个`MailService`接口和其实现类,使用`JavaMailSender`接口来发送邮件。以下是一个简单的示例: ```java @Service public class MailServiceImpl implements MailService { @...

    springmail架包

    JavaMail API 是 Java 平台上用于处理电子邮件的标准 API,而 SpringMail 则简化了它的使用,提供了一套与 Spring 配合良好的组件和配置方式。 **2. 配置 SpringMail** 在使用 SpringMail 之前,需要在 Spring 的...

    Spring整合Quartz定时发送邮件

    在本文中,我们将深入探讨如何使用Spring框架与Quartz库集成,实现定时发送邮件的功能。Quartz是一个开源的作业调度框架,它允许开发者在Java应用程序中安排任务执行。而Spring则是一个强大的企业级应用开发框架,...

    java邮件发送组件

    在实际开发中,除了直接使用Java Mail API,还可以选择一些成熟的Java邮件发送库,例如Apache Commons Email、Spring Framework的MailSender接口等,它们提供了更友好的API和额外的特性,可以帮助开发者快速实现邮件...

    使用Spring发送邮件

    在本文中,我们将深入探讨如何使用Spring框架来发送邮件,这是一个非常实用的功能,特别是在业务系统中通知用户、发送确认信息或进行客户服务时。 首先,我们需要了解Spring的邮件支持是通过`JavaMailSender`接口...

    Spring 使用Freemarker发送邮件的一个简单模板(代码不完整)

    标题中的“Spring 使用Freemarker发送邮件”涉及的是在Java开发中使用Spring框架集成Freemarker模板引擎来创建和发送电子邮件。Spring框架提供了一个强大的邮件服务接口,可以方便地与各种邮件服务器进行交互,而...

    spring线程发送邮件

    本文将深入探讨"spring线程发送邮件"这一主题,结合标签"源码"和"工具",我们将从源码层面理解Spring如何实现线程异步发送邮件,并探讨相关工具的使用。 在Spring框架中,邮件服务的实现主要依赖于`javaMailSender`...

    47. Spring Boot发送邮件【从零开始学Spring Boot】

    总结起来,通过引入`spring-boot-starter-mail`起步依赖,配置邮件服务器参数,创建JavaMailSender实例,以及编写发送邮件的服务类,我们可以在Spring Boot应用中实现邮件的发送。无论是简单的文本邮件还是丰富的...

    SpringUseJavaMailSendEmail(spring使用javamail发送邮件的例子)

    总结起来,Spring结合JavaMail API发送邮件的过程主要包括:配置`JavaMailSender` bean,创建邮件消息对象,设置邮件内容和属性,最后通过`JavaMailSender`实例发送邮件。通过这种方式,开发者可以轻松地在Spring...

    spring JavaMailSenderImpl 发送邮件 java

    以下是一个简单的示例,展示了如何在Spring中使用JavaMailSenderImpl发送邮件: ```java @Autowired private JavaMailSender emailSender; public void sendEmail() { SimpleMailMessage message = new ...

    Spring 使用163发邮件

    Spring提供的`JavaMailSender`接口是发送电子邮件的基础,它定义了一系列方法,如`send(Message message)`用于发送邮件,以及`createMimeMessage()`用于创建MIME类型的邮件消息对象。 2. **配置Spring发送邮件**:...

    spring集成邮件服务

    这个`sendSimpleMail`方法接收收件人地址、邮件主题和正文,然后使用`JavaMailSender`发送邮件。 在实际项目中,你可能还需要处理异常,如网络问题、认证失败等。同时,如果你需要发送的邮件具有模板,可以考虑使用...

    spring mail 实例

    首先,我们需要理解Spring Mail的核心组件`JavaMailSender`,这是一个接口,提供了发送邮件的基本方法。要使用`JavaMailSender`,我们需要配置相应的邮件服务器信息,如SMTP服务器地址、端口、用户名和密码。这些...

Global site tag (gtag.js) - Google Analytics