跟踪异常–第4部分– Spring的邮件发件人
如果您阅读过本系列以前的任何博客,您可能会记得我正在开发一个小型但几乎具有工业实力的应用程序,该应用程序在日志文件中搜索异常。 您可能还记得,我现在有一个可以包含一堆结果的类,需要将其发送给感兴趣的任何人。 这将通过实现下面显示的简单Publisher
界面来完成。
public interface Publisher { public <T> boolean publish(T report);
}
如果您还记得,那么要求是:
7 . Publish the report using email or some other technique.
在此博客中,我要处理需求的具体部分:通过电子邮件发送报告。 由于这是Spring应用程序,因此发送电子邮件的最简单方法是使用Spring的电子邮件类。 与Spring API的坚强后盾(模板类,例如JdbcTemplate和JmsTemplate)不同,Spring电子邮件类基于两个接口及其实现。 这些接口是:
- 邮件发件人
- JavaMailSender扩展MailSender
- 邮件留言
……实现是:
- JavaMailSenderImpl实现JavaMailSender
- SimpleMailMessage实现MailMessage
请注意,这些是“基本”类; 您可以使用诸如MimeMailMessage,MimeMailMessageHelper,ConfigurableMimeFileTypeMap和MimeMessagePreparator之类的类发送美观,更复杂的电子邮件内容。
在编写一些代码之前,几乎没有什么项目配置问题。 要使用Spring电子邮件类,您需要在Maven POM文件中输入以下内容:
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version>
</dependency>
这样可以确保基础Java Mail类可用于您的应用程序。
一旦在构建中配置了Java Mail类,接下来要做的就是设置Spring XML配置。
<!-- Spring mail configuration --><bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="${mail.smtp.host}"/></bean><!-- this is a template message that we can pre-load with default state --><bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"><property name="to" value="${mail.to}"></property><property name="from" value="${mail.from}"/><property name="subject" value="${mail.subject}"/></bean>
对于这个应用程序,这是发出自动报告的目的,我已经包括了两个弹簧豆: mailSender
和mailMessage
。 mailSender
是一个JavaMailSenderImpl
实例,配置为使用特定的SMTP邮件服务器,并将所有其他属性(例如TCP端口)保留为默认值。
第二个春天bean是mailMessage
,实例SimpleMailMessage
。 这次,我已经预配置了三个属性:“至”,“来自”和“主题”。 这是因为,作为自动消息,这些值始终相同。
当然,您可以以编程方式配置这些,如果您要创建邮件GUI,则可能需要做一些事情。
所有这些XML使得Publisher
的实现非常简单。
@Service
public class EmailPublisher implements Publisher { private static final Logger logger = LoggerFactory.getLogger(EmailPublisher.class); @Autowired private MailSender mailSender; @Autowired private SimpleMailMessage mailMessage; @Override public <T> boolean publish(T report) { logger.debug("Sending report by email..."); boolean retVal = false; try { String message = (String) report; mailMessage.setText(message); mailSender.send(mailMessage); retVal = true; } catch (Exception e) { logger.error("Can't send email... " + e.getMessage(), e); } return retVal; } }
Publisher
类包含一个方法: publish
,它采用通用参数T report
。 正如我之前所说,此类型必须与我以前的博客中Formatter
实现返回的参数类型相同。
此代码中实际上只需要考虑三个步骤:首先,将泛型T
强制转换为String
(如果参数T report
不是String
,这将全部转换为String
。
第二步是将电子邮件的正文附加到mailMessage
,然后发送使用消息mailSender.send(…)
最后一步是通过返回true
来履行Publisher
合同,除非电子邮件发送失败,在这种情况下,将记录异常并且返回值为false
。
在开发相关代码方面。 下一步是整理计划,以便按时生成报告,但稍后会更多……
- 该博客的代码可在Github上找到: https : //github.com/roghughe/captaindebug/tree/master/error-track 。
如果您想查看本系列中的其他博客,请在这里看……
- 使用Spring跟踪应用程序异常
- 使用Spring跟踪异常–第2部分–委托模式
- 错误跟踪报告–第3部分–策略和软件包私有
翻译自: https://www.javacodegeeks.com/2014/04/tracking-exceptions-part-4-springs-mail-sender.html
跟踪异常–第4部分– Spring的邮件发件人相关推荐
- spring发邮件_跟踪异常–第4部分– Spring的邮件发件人
spring发邮件 如果您阅读过本系列以前的任何博客,您可能会记得我正在开发一个小型但几乎具有工业实力的应用程序,该应用程序在日志文件中搜索异常. 您可能还记得,我现在有一个可以包含大量结果的类,这些 ...
- spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
spring 异常捕获异常 看来我终于快要结束本系列有关使用Spring进行错误跟踪的博客了,对于那些还没有阅读该系列博客的人,我正在编写一个简单但几乎具有工业实力的Spring应用程序,扫描日志文件 ...
- 跟踪异常–第5部分–使用Spring进行计划
看来我终于快要结束本系列有关使用Spring进行错误跟踪的博客了,对于那些还没有阅读该系列博客的人,我正在编写一个简单但几乎具有工业实力的Spring应用程序,扫描日志文件中的异常,然后生成报告. 在 ...
- spring 异常捕获异常_使用Spring跟踪异常–第2部分–委托模式
spring 异常捕获异常 在上一个博客中 ,我开始谈论需要弄清您的应用程序在生产环境中是否行为异常. 我说过,监视应用程序的一种方法是检查其日志文件是否存在异常,如果发现异常,则采取适当的措施. 显 ...
- 使用Spring跟踪异常–第2部分–委托模式
在上一个博客中 ,我开始谈论需要弄清楚您的应用程序在生产环境中是否行为异常. 我说过,监视应用程序的一种方法是检查其日志文件是否存在异常,如果发现异常,则采取适当的措施. 显然,日志文件会占用数百兆的 ...
- 使用Spring实现邮件发送
2019独角兽企业重金招聘Python工程师标准>>> 这两天写个小程序需要使用邮件发送的功能,在网上搜索了一帮子文章,感觉还是使用Spring的邮件发送功能比较方便,哈哈,懒人就这 ...
- Spring Security使用出现 Encoded password does not look like BCrypt异常的解决以及Spring Securit加密方式的学习
QUESTION:Spring Security使用出现 Encoded password does not look like BCrypt异常的解决以及Spring Securit加密方式的学习? ...
- spring boot 邮件端口_springboot集成qq邮件发送功能
在很多业务中都存在着发送邮件的功能,邮件在国内不是经常使用但是在国外非常常用,废话少说,上代码! 首先先得开通smtp功能 进入qq邮箱>设置>账户>开启 获取授权码(待会要用) p ...
- smtplib python_伪造邮件发件人系列:一、python之smtplib库
这两日用到了python的发送邮件功能,恰好又想起来wordpress发送给我的邮件都是形如wordpress@leniy.info 的虚拟地址,于是我就上网查找了下伪造邮件发件人的方案.网上这些资料 ...
最新文章
- Python(6)——Django之hello python模板视图
- Error response from daemon: Conflict. The container name /mysql is already in use by container
- SSM框架之MyBatis3专题5:MyBatis注解式开发
- pyqt5子窗口跳出主窗口_弹出式窗口与 可用性,转换和跳出率
- [NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP
- Redis常见面试题详解
- 网页信息上传服务器,Unity 连接网页服务器 获取数据上传数据
- Mysql如何新建一个服务和移除所新建的服务
- dell 服务器ghost系统,Dell 5000笔记本装win7 64位Ghost系统真正成功教程
- 淘宝API 优惠券查询
- 怎样检测php语法错误,检查php的语法错误
- 4G模块的GPS定位差距过大
- 零基础学前端系列教程 | 和前端谈恋爱的第005天——约会账单
- 解决unable to find valid certification path to requested target
- dts,dtb,dtc
- 转载:mongo常规操作 大于/小于/不等于……
- matlab矩阵转入tecplot,[转载]tecplot编辑自己想要的变量
- [UE4]打包运行时提示Plugin ‘‘ failed to load because module ‘‘ could not be found.缺少插件解决方法
- Dicom 文件 转成 JPG 格式(批量处理)
- 【云原生之Docker实战】使用Docker部署Linux系统监控平台Netdata
热门文章
- android微信分享之创建工程以及启动微信
- html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
- thinking-in-java(16) 数组
- java线程——什么是线程?
- JVM内存结构分析:为什么需要S0和S1?
- aws es方案_AWS Elasticsearch后模式
- 使用互联网了解的两个月里_我两个月来对Quarkus的了解
- java char类型空值_展望Java的未来:空值类型
- 纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存
- lucene_Lucene组件概述