- 浏览: 232859 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
喵喵大神:
这已经不能用了,可以更新下。推荐个免费的天气预报API:htt ...
天气预报接口|API|城市代码 -
machanghai502:
超级赞 解决了我一下午的问题
如何修改MyEclipse自动生成POJO、DAO模板 -
Lixh1986:
终于解决了,不过不是楼主的方法。在此记录一下:使用 css 后 ...
jquery的slideUp 会闪一下 解决办法 -
Lixh1986:
没效果。.......
jquery的slideUp 会闪一下 解决办法 -
程序员之家:
你好 实现的java工程与disucz的 用户整合,但是,在注 ...
java项目同步discuz与uchome登录
最近碰到好多新手问我发送email的问题,特此整理代码如下,以供参考,不妥之处还请指出。
以我的工程为例,需以下准备工作:
1.spring2.5.jar
2.activation.jar
3.velocity-1.6.jar
4.mail-1.4.2.jar
接下来就是写代码了。
1.封装邮件发送器
package com.haixu.platform.pub; import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.exception.VelocityException; import org.springframework.core.io.ClassPathResource; import org.springframework.mail.MailException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.velocity.VelocityEngineUtils; /** * 邮件发送器 */ public class MailUtil { protected final Log log = LogFactory.getLog(getClass()); private JavaMailSender javaMailSender; private VelocityEngine velocityEngine; private String from; private String title; private String encoding; private String templateLocation; private String[] toEmails; private Map<String,String> model; public boolean send(){ try { MimeMessage msg = javaMailSender.createMimeMessage(); MimeMessageHelper message = new MimeMessageHelper(msg, true, "UTF-8"); message.setFrom(from); message.setSubject(title); message.setTo(toEmails); message.setText(getMessage(), true); // 如果发的不是html内容去掉true参数 // message.addInline("myLogo",new ClassPathResource("img/mylogo.gif")); // message.addAttachment("myDocument.pdf", new ClassPathResource("doc/myDocument.pdf")); javaMailSender.send(msg); } catch (MessagingException e) { e.printStackTrace(); if(log.isWarnEnabled()) { log.warn("邮件信息导常! 邮件标题为: "+title); } return false; } catch (MailException me) { me.printStackTrace(); if(log.isWarnEnabled()) { log.warn("发送邮件失败! 邮件标题为: "+title); } return false; } return true; } /** * 邮件模板中得到信息 * @return 返回特发送的内容 */ private String getMessage() { try { return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateLocation, encoding, model); } catch (VelocityException e) { e.printStackTrace(); log.error("邮件模板读取失败!邮件标题为: "+title); } return ""; } private String[] createToEmail(String to) { return new String[] {to}; } public void setToEmail(String to) { setToEmails(createToEmail(to)); } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public void setVelocityEngine(VelocityEngine velocityEngine) { this.velocityEngine = velocityEngine; } public void setEncoding(String encoding) { this.encoding = encoding; } public void setModel(Map<String,String> model) { this.model = model; } public void setTemplateLocation(String templateLocation) { this.templateLocation = templateLocation; } public void setTitle(String title) { this.title = title; } public void setToEmails(String[] toEmails) { this.toEmails = toEmails; } public void setFrom(String from) { this.from = from; } public String getTemplateLocation() { return templateLocation; } }
2.spring配置文件,applictionContext-mail.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 属性文件加载 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <!-- <value>classpath:mail.properties</value> --> <value>/WEB-INF/properties/mail.properties</value> </list> </property> </bean> <!-- 邮件发送器 --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${mail.host}" /> <property name="username" value="${mail.username}" /> <property name="password" value="${mail.password}" /> <property name="defaultEncoding" value="UTF-8"></property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">${mail.smtp.auth}</prop> <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop> </props> </property> </bean> <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> <property name="resourceLoaderPath" value="classpath:velocity"></property> </bean> <bean id="templateMail" class="com.haixu.platform.pub.MailUtil"> <property name="javaMailSender" ref="mailSender"></property> <property name="from" value="${mail.from}"></property> <property name="encoding" value="UTF-8"></property> <property name="templateLocation" value="hello.vm"></property> <property name="velocityEngine" ref="velocityEngine"></property> <property name="title" value="www.cpuele.com"></property> </bean> </beans>
说明:模板文件放到classpath的velocity目录下,可自行改。
3.发送者邮件信息,mail.properties(WEB-INF下):
mail.from=yourname@gmail.com mail.host=smtp.gmail.com mail.password=yourpassword mail.smtp.auth=true mail.smtp.timeout=25000 mail.username=yourname
4.模板文件,hello.vm(classpath的velocity目录下):
${username},您好,欢迎来到恒特电器!
5.测试Demo
MailUtil mailUtil = (MailUtil) SpringToolListener.getApplicationContext().getBean("templateMail"); Map<String, String> data = new HashMap<String, String>(); data.put("username", "村长"); mailUtil.setTemplateLocation("hello.vm"); mailUtil.setModel(data); mailUtil.setToEmail("hengte@cpuele.com"); mailUtil.setTitle("mail with veloctiy and spring"); mailUtil.send();
注意:SpringToolListener是我自己的工具类,可将上述代码替换为MailUtil mailUtil = (MailUtil) context.getBean("templateMail");
tomcat下测试成功。
- velocity-1.6.4.jar (411.5 KB)
- 下载次数: 545
- activation.jar (61.5 KB)
- 下载次数: 474
- mail-1.4.2.jar (424.7 KB)
- 下载次数: 597
评论
23 楼
zongshoujin
2012-07-18
com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User 发送不成功啊!一直包这个错!请教了!本人qq:492805861,谢谢!
22 楼
zongshoujin
2012-07-18
class path resource [WEB-INF/mail.properties] cannot be opened because it does not exist
总是提示说文件找不到的,但是实际上WEB-INF下面是有的啊!什么情况??????
总是提示说文件找不到的,但是实际上WEB-INF下面是有的啊!什么情况??????
21 楼
簡單從泚銷夨
2011-06-23
wangyu1221 写道
收邮件被标题编码搞死了,各种编码,各种不编码,几乎做不到通用
同感...就不知道邮件客服端是怎么实现的。
20 楼
wangyu1221
2011-06-23
收邮件被标题编码搞死了,各种编码,各种不编码,几乎做不到通用
19 楼
簡單從泚銷夨
2011-06-23
bitray 写道
发送不是什么玩意,麻烦的是接收
是的,我以前写过用jmail接收邮件,不是那么好用。
18 楼
Ayin2767
2011-06-23
参考使用了,谢谢!
17 楼
sanz
2010-09-10
请问下,如果采用这种方式进行群发,收件人地址中有不存在的邮箱,会抛MailSendException,导致所有人都无法收到邮件,有什么解决办法?
16 楼
bitray
2010-08-30
jerryqiu007 写道
bitray 写道
发送不是什么玩意,麻烦的是接收
不过javamail一般的应用只做发送服务呵呵
请教下,接收一般采用什么呢?这两天被这个接收弄的太闹心,发送已经开发完了
15 楼
程序新手
2010-08-30
jerryqiu007 写道
activation.jar 加入到classpath中
几个jar包都放在lib文件夹下面,包括您说的activation.jar
14 楼
jerryqiu007
2010-08-29
程序新手 写道
配置下,发现出现了无法初始化类异常
追踪到Spring源码发现可以找到这个类,而且在Spring配置中的参数也都有 ,表示疑惑

求楼主和配置通过的朋友解答。谢谢
activation.jar 加入到classpath中
13 楼
程序新手
2010-08-29
配置下,发现出现了无法初始化类异常
追踪到Spring源码发现可以找到这个类,而且在Spring配置中的参数也都有 ,表示疑惑

求楼主和配置通过的朋友解答。谢谢
12 楼
jerryqiu007
2010-08-29
tsxm 写道
请问发送图片怎么办?
MimeMessageHelper 提供发送附件的接口addAttachment
11 楼
jerryqiu007
2010-08-29
bitray 写道
发送不是什么玩意,麻烦的是接收
不过javamail一般的应用只做发送服务呵呵
10 楼
bitray
2010-08-26
发送不是什么玩意,麻烦的是接收
9 楼
BestUpon
2010-08-25
使用Apache Common email 很容易,几乎不需要什么配置!
8 楼
suxiaofei
2010-08-25
不错,对新人很有用。
7 楼
mengzhaopeng
2010-08-25
好东西,学习了,谢谢分享
6 楼
testfor1
2010-08-25
写的挺好,就是不支持附件。
5 楼
sunjun
2010-08-25
可以使用apache 的common email ,也很方便的
4 楼
tsxm
2010-08-25
请问发送图片怎么办?
发表评论
-
Spring 事务不回滚的解决办法
2012-02-12 02:16 17224Spring 事务不回滚的问题关键是:不能对该异常用try.. ... -
Cannot load 32-bit SWT libraries on 64-bit JVM解决方案
2011-11-13 12:27 13832win7 64-bit下,Eclipse运行SWT程序报错:C ... -
Tomcat6/7 SSI配置
2011-07-09 15:21 1231在$CATALINA_BASE/conf/servlet.x ... -
天气预报接口|API|城市代码
2011-06-27 11:36 7390根据 下面的接口可获得 ... -
BoneCP,Proxool,DBCP,C3P0 参数介绍
2011-04-19 06:32 2316DBCP,C3P0,Proxool,BoneCP ... -
Flash Builder 4 注册码|序列号|破解版
2011-04-11 22:45 2551Flash Builder 4的注册码 几个目前可用的注册码: ... -
PowerDesigner连接数据库出现错误: Non SQL Error : Could not load class
2011-03-30 11:51 1622PowerDesigner连接数据库出现错误: Non SQL ... -
BETA,RC,ALPHA软件版本号介绍
2010-09-06 09:38 1104版本号:V(Version): ... -
PowerDesigner 15下载(破解)
2010-09-03 14:16 3724PowerDesign是Sybase推出的主打数据库设计工具。 ... -
Rational rose 2003安装破解过程
2010-09-02 16:06 1564一、下载rational rose 2003英文版 【=== ... -
java项目同步discuz与uchome登录
2010-08-29 23:24 3175本项目提供完全免费的JAVA版Discuz Ucenter A ... -
AJP
2010-08-29 15:26 1033由于tomcat的html和图片解析功能相对其他服务器如apc ... -
Spring发送邮件-java发送email
2010-08-23 11:37 1416最近碰到好多新手问我发送email的问题,特此整理代码如下,以 ... -
Jmagick压缩高质量图片
2010-08-19 17:05 1313图片处理需要使用ImageMagick时,需要做如下配置: ... -
FusionCharts link中文乱码 字体大小 解决办法 - FusionCharts参数说明
2010-07-27 18:36 3236功能特性animation ... -
DBCP连接池配置参数说明及优化
2010-05-18 10:46 2857在配置DBCP连接池时,主 ... -
验证码无法显示:Could not initialize class sun.awt.X1 解决方案
2010-05-13 15:25 1780网站验证码突然无法显示,并报如下错误。 Caused by: ... -
EL表达式 访问集合和String的内置方法(size,contains,indexOf,endWith...)
2010-05-06 10:08 4344称呼 Functions 标签库为标签库,倒不如称呼其为函数库 ... -
互联网常见Open API文档资源
2010-04-14 09:18 1211所谓的开放API(OpenAPI)是服务型网站常见的一种应 ... -
Derby数据库使用简介-Derby入门
2010-04-10 08:52 2334Derby数据库是由Apache下的一个开源的DB项目,与其它 ...
相关推荐
通过以上步骤,你就可以在Java应用中使用Spring发送邮件了。当然,实际的邮件发送可能更复杂,涉及HTML内容、附件、多部分消息等,可以使用`MimeMessage`和`MimeMessageHelper`类来构建复杂的邮件结构。例如,添加...
Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...
通过集成这个库,"email-spring-boot-starter"使Spring Boot应用能够轻松发送邮件。 在使用这个starter时,首先需要在项目的pom.xml或build.gradle文件中引入依赖。对于Maven项目,可以在dependencies节点下添加...
EWS是一种基于SOAP协议的API,用于与Microsoft Exchange Server交互,包括发送邮件。如果你的应用需要与Exchange服务器集成,EWS是个不错的选择。使用EWS,你需要添加ews-java-api库到`pom.xml`: ```xml ...
- 在需要发送邮件的地方调用邮件发送服务,传入邮件信息对象,即可完成邮件的发送。 ```java // 调用邮件发送服务 boolean result = emailSendService.send("receiver@example.com", "邮件主题", "邮件正文"); ...
下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...
Java发送邮件是常见的系统集成需求,它涉及到网络通信、邮件协议和编程技术。在这个主题中,我们将探讨两种方法:一种是通过Spring Cloud实现,另一种是使用静态方法直接调用JavaMail API。这两种方法都有其独特的...
以下是一个简单的示例,展示了如何在Spring中使用JavaMailSenderImpl发送邮件: ```java @Autowired private JavaMailSender emailSender; public void sendEmail() { SimpleMailMessage message = new ...
通过这个示例,你可以了解到Spring Boot如何通过自动配置简化邮件服务的集成,以及如何使用JavaMailSender接口发送邮件。当然,实际应用中可能需要处理更复杂的邮件场景,例如发送HTML邮件、添加附件等,但这个基础...
有了JavaMailSender,我们就可以在业务逻辑中轻松发送邮件了。以下是一个简单的示例,展示如何发送一封纯文本邮件: ```java @Service public class MailService { @Autowired private JavaMailSender ...
在Java开发中,Spring框架提供了一种方便的方式来发送电子邮件,这就是SpringMail模块。SpringMail使得在应用程序中集成邮件服务变得更加简单,它支持多种功能,包括发送带有多个附件、多接收者(包括抄送和暗送)的...
在本场景中,我们将利用Spring来管理JavaMail Sender对象,以便于发送邮件。 #### Velocity模板引擎 Velocity是一个基于Java的模板引擎,它允许开发者通过简单的模板语言来生成HTML网页、XML数据或者普通的文本。在...
使用Spring发送邮件的基本步骤如下: 1. 添加Spring核心库和相关的邮件发送库(如JavaMail API)到项目依赖中。 2. 在Spring配置文件(如`email-163.xml`)中配置邮件服务器的相关信息,如用户名、密码、SMTP服务器...
首先,Spring邮件抽象层的核心接口是`MailSender`,它定义了发送邮件的基本操作。`SimpleMailMessage`是用于封装基本邮件属性的值对象,这些属性包括发件人(from)、收件人(to)、抄送人(cc)、主题(subject)...
该项目依赖于无模板模块it.ozimov:spring-boot-email-core ,该模块提供了核心功能(例如,发送电子邮件,调度和确定优先级,持久性)。 由于它是无模板的,因此它不提供用于通过模板引擎生成电子邮件正文的服务的...
在本文中,我们将深入探讨如何使用Spring Boot框架与Amazon Simple Email Service (AWS SES)集成,以便在Java应用程序中实现电子邮件的发送功能。AWS SES是一种经济高效的电子邮件服务,它允许开发者发送大量邮件,...
Java发送邮件是常见的系统集成需求,Spring框架中的JavaMailSender接口提供了一种便捷的方式来实现这一功能。本教程将详细介绍如何使用Spring MVC与JavaMailSender发送邮件,并提供两种发送方式。 首先,我们需要...
标题“Spring整合Quartz定时发送邮件”涉及到两个主要技术领域:Spring框架和Quartz调度库。这个场景的应用是使用Quartz来安排任务,而Spring则提供了集成环境和邮件服务支持。 首先,Quartz是一个开源的作业调度...
首先,Spring框架提供了`JavaMailSender`接口,它是发送邮件的核心接口。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机地址、端口、用户名、密码等,来设置邮件发送的环境。`JavaMailSender`提供了...
本教程将详细讲解如何使用Spring发送邮件,以及在遇到问题时如何排查。 首先,我们需要在Spring项目中引入邮件服务相关的依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.spring...