Javascript 如何定制电子邮件传输
据我所知,Meteor在内部使用NodeEmailer发送电子邮件,并根据定义的MAIL_URL环境属性创建相应的传输 我们已经实现了一个EmailSenderService,它创建了几个不同的NodeEmailer传输。它使用定义为生产模式设置的帐户设置和开发模式的硬编码ethereal帐户 我想知道是否以及如何能够更改内部Meteor电子邮件处理,以使用我们的特定于应用程序的EmailSenderService发送所有类型的电子邮件,尤其是通过帐户密码包发送的电子邮件(例如,注册和忘记密码的电子邮件)。我的想法是将调用重定向到中心Email.send函数到我们的EmailSenderService,而不是调用Meteor内部逻辑Javascript 如何定制电子邮件传输,javascript,meteor,meteor-accounts,Javascript,Meteor,Meteor Accounts,据我所知,Meteor在内部使用NodeEmailer发送电子邮件,并根据定义的MAIL_URL环境属性创建相应的传输 我们已经实现了一个EmailSenderService,它创建了几个不同的NodeEmailer传输。它使用定义为生产模式设置的帐户设置和开发模式的硬编码ethereal帐户 我想知道是否以及如何能够更改内部Meteor电子邮件处理,以使用我们的特定于应用程序的EmailSenderService发送所有类型的电子邮件,尤其是通过帐户密码包发送的电子邮件(例如,注册和忘记密码的
感谢您的思考以及任何即将提出的想法和提示…您有几个选择: 1.Monkeypatch
Email.send
正如@iiro所说,你可以用你自己的send
方法替换Email
模块
Email.send = function (options) {
return EmailSenderService.send(options);
}
2.将电子邮件
包替换为本地版本
如果Meteor在项目的packages/
目录中找到同名的包,它将在自己的实现中使用该包
3.使用未记录的功能连接到电子邮件。发送
编辑:我没有看到EmailTest
没有导出。因此,这只适用于制作本地副本,如选项2所示
查看,有一个钩子运行在Email.send
的开头,它允许您通过返回false来防止默认执行。您可以这样使用:
EmailTest.hookSend(function (options) {
EmailSenderService.send(options)
return false; // To stop default sending behaviour
});
您可以自定义Email.send-command,如Email.send=function(..){..}非常感谢您的回答。我喜欢“hookSend”变体,并将按照描述的用途使用它。