Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework扩展/覆盖点_Playframework - Fatal编程技术网

Playframework扩展/覆盖点

Playframework扩展/覆盖点,playframework,Playframework,我想知道PlayFramework是如何扩展的 我想到的情况是重写Mailer组件:在某些情况下,重写它以“dev”模式测试应用程序,并确保所使用的组件实现将邮件发送到我们的开发人员邮件地址(即使邮件在功能上发送给“真实”用户)可能会很有趣。 它还可用于将邮件“转发”到专用于发送邮件的平台(免费或收费)(如果网络主机提供有限的邮件发送功能…) 请让我知道,如果你知道如何覆盖Mailer组件(无需破解playframework核心源代码,只需添加模块或插件) 致以最良好的祝愿, Loïc邮件组件是

我想知道PlayFramework是如何扩展的

我想到的情况是重写Mailer组件:在某些情况下,重写它以“dev”模式测试应用程序,并确保所使用的组件实现将邮件发送到我们的开发人员邮件地址(即使邮件在功能上发送给“真实”用户)可能会很有趣。 它还可用于将邮件“转发”到专用于发送邮件的平台(免费或收费)(如果网络主机提供有限的邮件发送功能…)

请让我知道,如果你知道如何覆盖Mailer组件(无需破解playframework核心源代码,只需添加模块或插件)

致以最良好的祝愿,
Loïc

邮件组件是库中的一个类,而不是插件。要实现您的用例,您需要创建自己的类,或者扩展
play.libs.Mail
类,并且在发送邮件消息时,使用自己的类而不是附带的play类


您可以在这里看到类-

For development Play有一个模拟邮件程序(您可以在application.conf中设置它)。模拟邮件程序只需将邮件内容打印到shell、Eclipse控制台等


对于生产来说,最简单的方法可能是将您的主机设置为使用SSMTP或Nullmailer之类的东西,例如,如果您想要便宜的设置,您可以使用GMail帐户并使用Google的SMTP服务器发送电子邮件。使用SSMTP/Nullmailer的好处是Play完全不知道您的邮件配置,您可以随时更改邮件配置,而无需进行任何代码更改。

我了解您的解决方案,但问题是,我必须通过调用我的实现来更改对邮件类的所有调用……这些调用您都有吗已经实现,核心播放,或其他模块?我的意思是有很多模块(不仅在我的应用程序中)使用该Mailer组件。目标是在不影响使用它的模块和应用程序的情况下(通过配置)将Mailer实现替换为其他实现。你明白我的意思吗?是的,不幸的是我不认为这是可能的,因为它是直接类访问,而不是通过工厂。因此,可能需要更改来源。好的,谢谢你的回答。我可能会建议将该增强功能嵌入到新的播放版本中。你的建议可以满足我的需要。我会调查一下,然后告诉你是否可以。谢谢