我有一个 Meteor 应用程序,我正在使用email package。我已经在使用帐户(account-ui和帐户密码),并且最近使用gmail帐户设置了process.env.MAIL_URL
变量,测试了"重置密码"功能并收到了一封电子邮件。
我当时正在尝试编写代码来接收电子邮件(用户只需点击按钮)基本上可以看到这项工作,但我没有看到电子邮件"已记录"在我的控制台中本地运行流星。
如果我这样做
if(Meteor.isServer){
Email.send({
to: "to.address@email.com",
from: "from.address@email.com",
subject: "Example Email",
text: "Text of the email."
});
})
我看到一个控制台消息
(如果点击&#34,我会得到同样的结果;重置密码"使用帐户包功能)
但是,根据文档说明,我在调用自己的代码时看不到这条消息,这很简单。
我在/ server下有一个 serverMethods.js 文件,其中有
Meteor.methods({
sendEmail: function (text) {
check([text], [String]);
this.unblock();
Email.send({
to: "to.address@email.com",
from: "from.address@email.com",
subject: "Example Email",
text: text
});
});
然后在客户端我调用
Template.NavBar.events({
"click #testEmail" :function(event){
event.preventDefault();
Meteor.call('sendEmail', 'dataText');
}
});
(testEmail
我的navBar模板中一项的ID)。点击后,如果我是console.log,我可以看到正在处理我的流星呼叫,但是我没有在控制台中看到与发送电子邮件相同的消息。
我缺少的东西必须非常简单明了,因为文档中解释了这个功能的简单性,而且我发现的关于该主题的大多数教程基本上都是做同样的事情。尽管如此,我还是不明白为什么我没有看到我的控制台中记录的电子邮件,因为它发生在帐户功能中,或者我自己从服务器端调用Email.send
答案 0 :(得分:0)
也许这只是一个错字,但请确保您将环境变量“MAIL_URL”设置为“MAIL_UR”。
我发现从设置文件中动态设置它更容易(仅在服务器端):
Meteor.startup(function() {
process.env.MAIL_URL = 'smtp://' + Meteor.settings.private.mail.username + ':' + Meteor.settings.private.mail.password + '@' + Meteor.settings.private.mail.smtpServer + '/';
});
答案 1 :(得分:0)
嗯,这毕竟是愚蠢的。如果您有process.env.MAIL_URL
,则不会看到“未发送邮件;要启用发送,请设置MAIL_URL环境变量”。控制台中记录的消息。仅当您没有设置变量时才会显示。
我的问题是我有变量集,但我对用于测试的“到”电子邮件地址不够谨慎。我没有将电子邮件发送到正确的帐户,因此我没有看到任何电子邮件被发送,也没有在控制台上发送任何“假”电子邮件。
所以基本上,process.env.MAIL_URL
我只需要改变
Email.send({
to: "to.address@email.com", <--- Real address here
from: "from.address@email.com",
subject: "Example Email",
text: text
});
发送电子邮件或删除process.env.MAIL_URL
以使用垃圾邮件用户对其进行测试。