关于email:Grails邮件插件投递到控制台/登录开发模式

Grails mail plugin delivery to console / log in development mode

我正在使用带有邮件插件的 Grails。在开发模式下,我希望我的应用程序发送的邮件被渲染(以捕获模板中的错误)但打印到控制台。

我找到的唯一选择是

但是,根据文档:

this will treat any call to mailService.sendMail() as a no-op

这不是我想要的,因为我希望开发人员能够点击我们的确认链接(为此我需要邮件输出)。

有没有一种很好的方法可以将邮件"传递"到控制台?我知道我可以用另一个地址覆盖收件人字段,但我宁愿在测试时不涉及我们的邮件服务器。


您可以在 src/groovy 中创建自己的 mailService 虚拟实现作为类,然后在 grails-app/conf/spring/resources.groovy 中放置一些条件代码以仅在开发模式下定义虚拟服务。我能想到的最简单的是

src/groovy/com/example/DummyMailService.groovy

grails-app/conf/spring/resources.groovy

显然你可以更聪明,例如使用记录器而不是 println,或者根据配置选项而不是环境来切换虚拟服务(这样您可以稍后在特别想测试它时以开发模式打开邮件)。

如果你希望能够处理渲染模板的 body(view:'...', model:[:]) 调用,你可以使用 groovyPageRenderer:

resources.groovy


GreenMail 插件是我能想到的最接近您想要的插件(请参阅此处的插件)。它将在网页中呈现电子邮件(插件提供控制器),不确定您是否可以设置 Log4j 将电子邮件记录到控制台...