Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/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
Javascript 如何定制电子邮件传输_Javascript_Meteor_Meteor Accounts - Fatal编程技术网

Javascript 如何定制电子邮件传输

Javascript 如何定制电子邮件传输,javascript,meteor,meteor-accounts,Javascript,Meteor,Meteor Accounts,据我所知,Meteor在内部使用NodeEmailer发送电子邮件,并根据定义的MAIL_URL环境属性创建相应的传输 我们已经实现了一个EmailSenderService,它创建了几个不同的NodeEmailer传输。它使用定义为生产模式设置的帐户设置和开发模式的硬编码ethereal帐户 我想知道是否以及如何能够更改内部Meteor电子邮件处理,以使用我们的特定于应用程序的EmailSenderService发送所有类型的电子邮件,尤其是通过帐户密码包发送的电子邮件(例如,注册和忘记密码的

据我所知,Meteor在内部使用NodeEmailer发送电子邮件,并根据定义的MAIL_URL环境属性创建相应的传输

我们已经实现了一个EmailSenderService,它创建了几个不同的NodeEmailer传输。它使用定义为生产模式设置的帐户设置和开发模式的硬编码ethereal帐户

我想知道是否以及如何能够更改内部Meteor电子邮件处理,以使用我们的特定于应用程序的EmailSenderService发送所有类型的电子邮件,尤其是通过帐户密码包发送的电子邮件(例如,注册和忘记密码的电子邮件)。我的想法是将调用重定向到中心Email.send函数到我们的EmailSenderService,而不是调用Meteor内部逻辑


感谢您的思考以及任何即将提出的想法和提示…

您有几个选择:

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”变体,并将按照描述的用途使用它。