最近刚完成一个任务-付款提醒邮件的发送,对于java邮件的发送有了更深刻的认识,的确java提供的邮件发送机制的确让邮件发送这个问题变得灵活而又简单。并且由于项目组其他人负责了短信的发送,巧的是这个邮件发送的借口与短信发送的借口都被封装到了消息发送的借口,我也顺便学习了一下短信发送的原理,呵呵,算是一箭双雕吧。
那先来说说邮件发送。按照按接口编程的习惯,当然先要定义一个邮件发送的接口,再实现其接口,完成邮件发送Service层的代码。这个顺序我想大家没什么反对意见吧。
首先咱们先定义一个消息发送接口,它是邮件发送与短信发送的上层接口。
再来定义一下邮件发送器接口,由于我这里是通过velocity模板发送邮件的,所以如下定义了接口:
接着实现邮件发送的接口:
大家看到了上面的实现里注入了EmailSender,它也是一个接口,它的实现里注入了JavaMail提供的邮件发送接口。定义了两层是为了区分有模板的发送和无模板的发送。我们来看看它是什么样的:
接着实现这个EmailSender接口:
O(∩_∩)O~大家又注意到了 这个接口实现里又注入了一个接口ConfigService 它是去读取邮件发送的相关配置信息,如上所示:
// configService读出参数
Properties pros = new Properties();
pros.setProperty("mail.smtp.user", configService.getConfig(BasePropertyID.MAIL_SMTP_USER_ID));
pros.setProperty("mail.smtp.host", configService.getConfig(BasePropertyID.MAIL_SMTP_HOST_ID));
pros.setProperty("mail.smtp.port", configService.getConfig(BasePropertyID.MAIL_SMTP_PORT_ID));
pros.setProperty("mail.smtp.connectiontimeout", configService.getConfig(BasePropertyID.MAIL_SMTP_CONNECTIONTIMEOUT_ID));
pros.setProperty("mail.smtp.timeout", configService.getConfig(BasePropertyID.MAIL_SMTP_TIMEOUT_ID));
pros.setProperty("mail.smtp.from", configService.getConfig(BasePropertyID.MAIL_SMTP_FROM_ID));
pros.setProperty("mail.smtp.auth", configService.getConfig(BasePropertyID.MAIL_SMTP_AUTH_ID));
sender.setJavaMailProperties(pros);
sender.setPassword(configService.getConfig(BasePropertyID.MAIL_SMTP_PASSWORD_ID));
而且由于涉及到参数的数据成员较多,就将他们一起封装到了Mail类:
好了 整个接口都实现了,其实排除了你发送邮件提供给邮件发送接口的几个参数,剩下的也就是调用java提供的邮件发送的API和一些邮件发送必备的配置信息,必不是很难懂吧。大家肯定注意到了邮件发送接口的velocity模板解析方法:
content = VelocityParserUtil.getInstance().parseVelocityTemplate(templet, paramMap);
它具体的实现如下所示:
我们会在其他的Service中去调用邮件发送的接口,只需要在业务层里构造好邮件发送的接口所需参数,我们的邮件就可以发送出去了。还有一点请大家注意,我这里主要强调的是运用velocity模板发送邮件,接口所需要的参数templat大家不要误解为velocity模板的文件名,它其实velocity文件的文件流,是一个已经被读入的字符串。大家可以参考一下测试用例,大致可以明白是怎么回事了。
整个邮件的发送大家是否明了了呢,呵呵!
后面我们会将这个接口向上抽象,为了实现我们短信发送的实现,下一篇敬请期待哦
分享到:
相关推荐
java发送短信和发送邮件的代码
使用java发送短信的方法有两个(一个是使用阿里的短信服务,一个是使用uoleem短信服务),使用java发送邮件的方法只有一个,这个方法支持群发和单发
该包包含了java短信验证功能实现,和需要的架包,以及邮件发送功能
java发送邮件的源码和jar包,注释写的很详细 一看就会
微信企业微信短信邮件qq发送消息
使用JavaMailSender包,结合Java8和springboot框架,使用公司阿里企业邮箱免费发送邮件,因为公司邮件不限数量,所以邮件测试发送无上限。对于QQ或163邮箱账户可能需要开通SMTP服务,具体信息请百度教程,有问题可以...
使用Java进行邮件短信发送
这个是我发了一天的时间封装好的Java发送Email 无需任何杂乱架包 你只需要我这一架包就够了 里面有2个客户端方法 而且是static的直接用即可 支持附件奥 我忙碌了一天 这个架包大大减少了开发 什么都不需要只要一个...
commons-email-1.1.jar,mail.jar,activation.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar,commons-codec-1.4.jar
java课程设计之发送邮件客户端,带发送附件,直接可以发送,需要填写smtp等信息,这个是必须要的,不管用什么方式
linux定时java程序,包含短信、邮件发送等检测程序,使用多线程技术。主要功能是监控系统状态,然后通过短信邮件进行通知,里边包含了许多测试工程,自己看代码选择需要的
java沙箱支付宝支付,QQ邮箱发送,短信发送,语音播报,手机短信发送等功能jar以及源码
实现短信/邮件发送,短信邮件服务商通过插件方式集成,需要jms,发送接口在SendNotifyApi.java
getDigitalSignature方法:返回用户信息中的邮件验证密钥,用于和邮件链接中的密钥做比对。 sendRestPwdEmail方法:发送重置密码邮件。用户注册激活邮件流程基本类似,有兴趣的朋友可以自己尝试写一个激活方法。
一个完整的系统,主要包括短信功能以及邮件功能,可以进行参考
Springboot阿里、腾讯短信和邮件发送service封装,根据配置启用或禁用
短信发送,邮件发送,基于myeclipse开发环境
本人在开发的时候遇到anroid中邮箱开发这一需求,当时寻找了很久这三个jar包(mail.jar,comms-email-1.5.jar,activation.jar),现在提供给有需要的朋友方便开发使用。
Spring Boot邮件发送(powernode document)(源代码) 1.概述 2.最佳实践 2.1创建项目引入依赖(mail) 2.2修改yml配置文件 2.3编写测试发送邮件 2.4 测试结果 2.4.1 发送基本内容 2.4.2 发送复杂内容 我们使用java...
模拟消息服务器,通过队列实现消息排队发送,主要是邮件和短信都需要通过队列排队发送,邮件还有限制每分钟能发送的消息数量。