`

使用Spring + JMail 发送QQ邮件

阅读更多

1. Email模型实体类

package com.spring.email;

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

public class MailBean {

	//发送邮件账号
	private String from;
	//接收邮件账号集合
	private String[] tos = {};
	//密送邮件账号集合
	private String[] bcc = {};
	//抄送邮件账号集合
	private String[] cc = {};
	//回复地址
	private String relpyTO;
	//文本或HTML
	private String text;
	//主题
	private String subject;
	//日期
	private Date date;
	//附件
	private File[] files = {}; 
	
	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
	}

	public String[] getTos() {
		return tos;
	}

	public void setTos(String[] tos) {
		this.tos = tos;
	}

	public String[] getBcc() {
		return bcc;
	}

	public void setBcc(String[] bcc) {
		this.bcc = bcc;
	}

	public String[] getCc() {
		return cc;
	}

	public void setCc(String[] cc) {
		this.cc = cc;
	}

	public String getRelpyTO() {
		return relpyTO;
	}

	public void setRelpyTO(String relpyTO) {
		this.relpyTO = relpyTO;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public Date getDate() {
		if(date==null){date = new Date();}
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public File[] getFiles() {
		return files;
	}

	public void setFiles(File[] files) {
		this.files = files;
	}
}

 2. 邮件处理类

package com.spring.email;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

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

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class Mail {

	/**
	 * java 发送邮件 
	 * org.springframework.mail.javamail.JavaMailSender 接口
	 */
	private JavaMailSender mailSender;
	
	/**
	 * FreeMarker 配置
	 */
	private Configuration config;

	/**
	 * 获取
	 * 使用模板发邮件
	 * @param fileName 模板名称
	 * @param molde 动态对象
	 * @return 模板 文本、HTML
	 * @throws Exception
	 */
	public String getTemplateText(String fileName,Object... molde) throws Exception{
		Map<String,Object> map = new HashMap<String,Object>();
		for (Object object : molde) {
			String name = object.getClass().getSimpleName();
			name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toLowerCase());
			map.put(name,object);
		}
		Template template = config.getTemplate(fileName);
		return FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
	}
	
	/**
	 * 发送邮件
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void send(MailBean bean) throws MessagingException, UnsupportedEncodingException{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(bean.getText());
		helper.setReplyTo(bean.getRelpyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	/**
	 * 发送邮件  HTML 格式
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void sendHTML(MailBean bean) throws MessagingException, UnsupportedEncodingException{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(bean.getText(),true);
		helper.setReplyTo(bean.getRelpyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	/**
	 * 发送邮件  HTML模板 格式
	 * @param bean 邮件属性
	 * @throws MessagingException
	 * @throws UnsupportedEncodingException 
	 */
	public void sendTemplate(MailBean bean,String fileName,Object... molder) throws Exception{
		MimeMessage msg = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(msg,true,"UTF-8");
		msg.setSubject(bean.getSubject());
		helper.setSentDate(bean.getDate());
		helper.setText(getTemplateText(fileName,molder),true);
		helper.setReplyTo(bean.getRelpyTO());
		helper.setFrom(bean.getFrom());
		for (File file : bean.getFiles()) {
			helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		}
		for (String bcc : bean.getBcc()) {
			helper.addBcc(bcc);
		}
		for (String cc : bean.getCc()) {
			helper.addBcc(cc);
		}
		for (String to : bean.getTos()) {
			helper.addTo(to);
		}
		mailSender.send(msg);
	}
	
	public JavaMailSender getMailSender() {
		return mailSender;
	}

	public void setMailSender(JavaMailSender mailSender) {
		this.mailSender = mailSender;
	}

	public Configuration getConfig() {
		return config;
	}

	public void setConfig(Configuration config) {
		this.config = config;
	}
}

 3. Spring 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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="port" value="25"/>
		<property name="protocol" value="smtp"/>
		<property name="host" value="smtp.qq.com"/>
		<property name="username" value="1548284991@qq.com"/>
		<property name="password" value="**********"/>
		<property name="defaultEncoding" value="utf-8"/>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">true</prop>
			</props>
		</property>
	</bean>
	<bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
		<property name="freemarkerSettings">
			<props>
				<prop key="default_encoding">UTF-8</prop>
				<prop key="template_update_delay">600000</prop>
			</props>
		</property>
		<property name="templateLoaderPath" value="com/spring/freemaker"/>
	</bean>

	<bean class="com.spring.email.Mail">
		<property name="mailSender" ref="javaMailSender"/>
		<property name="config" ref="freeMarkerConfiguration"/>
	</bean>
	<bean id="dateFormat" class="java.text.SimpleDateFormat">
		<constructor-arg value="yyyy-MM-dd"/>
	</bean>
</beans>

 4. 发送邮件

package com.spring.email;

import javax.mail.MessagingException;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringSendEmail {
	
	public static void main(String[] args) throws BeansException, MessagingException {
		try {
			BeanFactory factory = new ClassPathXmlApplicationContext("app*.xml");
			Mail mail = factory.getBean(Mail.class);
			MailBean bean = factory.getBean(MailBean.class);
			mail.sendTemplate(bean, "registerTemplate.html");
			System.out.println("success");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}

 

分享到:
评论

相关推荐

    VB6+Jmail简单的邮件收发小程序

    在开发过程中,需要注意的是,由于网络安全问题,现在许多邮件服务提供商要求使用SSL/TLS加密连接来发送和接收邮件,因此在配置Jmail时,可能需要启用这些安全选项。此外,错误处理和异常处理也是开发过程中必不可少...

    如何利用asp+jmail发送系统邮件

    在实际项目中常常会碰到注册会员时,通过注册时的邮箱进行会员认证操作;...管理员也可以通过系统邮箱进行消息推送! 那么在实际的开发中如何发系统邮件昵?我这里采用的是:asp+jmail组件发送系统邮件!

    用ASP+Jmail发邮件的完整范例

    在本示例中,我们将探讨如何使用ASP结合Jmail组件发送电子邮件。Jmail是一款功能强大的ASP邮件组件,允许开发者在ASP环境中实现SMTP(Simple Mail Transfer Protocol)邮件发送功能。 首先,确保你的Web服务器支持...

    VB+JMAIL邮件发送样例

    总结来说,VB+JMail邮件发送涉及的主要知识点包括:VB编程基础、JMail组件的使用、邮件属性设置、邮件发送过程以及VB项目文件结构。通过理解和应用这些知识,开发者可以创建出能够发送邮件的VB应用程序。

    ASP.NET MVC3 + JMail

    通过学习这个示例,开发者不仅可以掌握如何在ASP.NET MVC3中使用JMail发送邮件,还能了解如何整合jQuery和AJAX以创建交互式的Web应用。此外,理解MVC设计模式对于提升Web开发技能至关重要,因为它鼓励分离关注点,...

    asp+w3jmail邮件发送(成功发送附详细说明).rar.rar

    在ASP中使用W3JMail发送邮件的过程主要包括以下几个步骤: 1. **安装和引用W3JMail组件**: 首先,你需要在服务器上安装W3JMail组件。这通常涉及到将组件文件复制到服务器的特定目录,如`INETPUB\SCRIPTS`,然后在...

    JMAIL 4.5 dll+JMAIL4.4.dll

    9. **邮件队列管理**:在高并发环境下,JMAIL可能会使用邮件队列来处理大量邮件,避免一次性发送过多邮件导致的网络阻塞或服务器压力。 10. **附件管理**:JMAIL允许添加和管理邮件附件,包括大小限制和类型检查等...

    ASP.NET + JMail

    5. **SMTP服务器配置**:在使用JMail发送邮件时,需要配置SMTP服务器的地址、端口、用户名和密码等信息。这通常涉及到网络配置和安全性设置,确保邮件能够正确地发送到目标邮箱。 6. **代码精简和注释**:项目描述...

    ASP探针+PHP探针+NET探针+jmail收发邮件测试+aspJpeg水印测试+aspUpLoad上传测试

    这个测试可能包含配置jmail发送和接收邮件的能力,验证SMTP和POP3服务器设置的有效性。 5. **aspJpeg水印测试**:`aspJpeg`是一个ASP图像处理组件,能够处理JPEG图像,如添加水印、缩放、裁剪等。这可能是用于测试...

    asp+JMAIL实现发送邮件

    主要介绍了asp+JMAIL实现发送邮件实例代码,感兴趣的小伙伴们可以参考一下

    ASP+jMAil 调指定邮箱

    `JMail.Charset="gb2312"`确保邮件内容使用GB2312编码,适合中文字符的处理。然后,`JMail.Content`属性设置为`mess`,这包含了用户提交的所有信息。 最后,`JMail.To`指定收件人的邮箱地址,`JMail.Subject`定义...

    php用jmail发邮件源代码

    要使用JMail发送邮件,首先需要确保你的服务器支持SMTP服务,因为大多数邮件发送都是通过SMTP协议进行的。SMTP服务器配置包括主机名(如smtp.example.com)和端口号(通常为25,SSL/TLS加密时可能是465或587)。 接...

    Jmail 发送电子邮件例子

    **Jmail 发送电子邮件例子** ...不过,这个例子已经提供了一个很好的起点,帮助开发者理解和实现使用JEmail、Spring和Struts2发送邮件的功能。通过深入研究和实践,你可以构建出更强大的邮件系统,满足各种需求。

    asp.net中使用Jmail发送邮件

    接下来,要在ASP.NET中使用Jmail发送邮件,首先要在你的Web.config文件中配置Jmail的相关设置。这通常包括SMTP服务器地址、端口、用户名、密码等信息。例如: ```xml &lt;add key="JMail.SMTPServer" value=...

    JMail包可以用来发邮件

    总的来说,JMail是一款强大且灵活的邮件发送工具,适合各种规模的企业和个人使用,尤其在批量邮件发送场景下,其高效和稳定的特点尤为突出。通过深入理解和使用JMail,开发者可以构建出高效、可靠的邮件系统,满足...

    jmail表单发送邮件

    - `save.asp`: 这个文件可能包含了接收表单数据并使用JMail发送邮件的逻辑。 - `default.asp`: 可能是用户填写邮件信息的表单页面。 - `checkcode.asp`: 可能用于验证码验证,防止垃圾邮件。 - `validatebody....

    使用Jmail组件发送和接收邮件(含附件)

    使用JMail发送邮件主要包括以下几个步骤: 1. **配置SMTP服务器**:JMail需要知道SMTP服务器的信息,包括服务器地址、端口号、用户名和密码。这些信息可以在程序中以Properties对象的形式设置。 2. **创建Session...

    利用Jmail发送邮件:

    ### 使用Jmail发送与接收邮件的关键技术点 #### 发送邮件 在提供的代码片段中,主要涉及了如何使用Jmail库来实现邮件的发送功能。Jmail是一个强大的.NET类库,用于开发支持SMTP、POP3协议的应用程序。下面将详细...

    AspJpeg+JMail组件

    3. **附件支持**:用户可以通过JMail发送任意类型的文件作为邮件附件,方便分享文档、图片或其他数据。 4. **身份验证**:对于需要登录的SMTP服务器,JMail支持SMTP认证,如用户名和密码验证。 5. **错误处理**:...

    用C#+Jmail写的一个收取邮件以及附件的测试程序

    最近在开发一个项目,需要开发一个web版的邮件客户端程序,做了一个测试程序,没有加太多细节的代码,如果有需要的朋友,可以下载参考一下。点击下载 程序中用到了JMail 4.4专业版,需要的朋友也可以参考文章:...

Global site tag (gtag.js) - Google Analytics