我正在尝试启用email support for my Meteor application,因为我有自己的服务器,所以我也希望使用自己的邮件服务器。所以我在postfix
服务器中安装了Debian wheezy
并成功发送并通过电子邮件发送到我的GMail地址,这意味着邮件服务器正常运行并发送电子邮件。
当我部署Meteor应用程序并尝试发送电子邮件时,说要重置密码,我的应用程序崩溃时出现以下错误:
Exception while invoking method 'forgotPassword' RecipientError: Can't send mail - all recipients were rejected
at Object.Future.wait (/home/loupax/phial/bundle/programs/server/node_modules/fibers/future.js:326:15)
at smtpSend (packages/email/email.js:94)
at Object.Email.send (packages/email/email.js:155)
...
...
我的MAIL_URL
环境变量的格式为MAIL_URL=smtp://my_domain.tld
。
答案 0 :(得分:3)
看起来我必须做的就是将MAIL_URL
环境变量从smtp://my_domain.tld
更改为smtp://localhost
。之后一切都运转良好
答案 1 :(得分:0)
您的服务器在亚马逊上吗?有时,SMTP服务器会阻止从某些托管服务提供商发送的整个IP范围内的任何内容,以阻止垃圾邮件。
您可能需要考虑使用其他SMTP服务器,亚马逊的SES或Mandrill(有陨石包提供帮助)(我个人同时使用SES和{{3 }})。
请注意,它不仅包括Amazons IP块,还有垃圾邮件发送者可以快速设置的任何托管服务提供商。您的SMTP服务器可能会使用其中包含所有这些ips的列表
答案 2 :(得分:0)
对于忘记密码的电子邮件,请按照以下步骤操作
1)在服务器文件夹中创建smtp.js文件,并将其复制到下面的代码中
Meteor.startup(function () {
process.env.MAIL_URL =
'smtps://abcd@gmail.com:password@smtp.gmail.com:465';
});
2)将以下代码粘贴到忘记的password.js文件中
Template.forgot.events({
'click #forgot'(event,template) {
event.preventDefault();
let email = $("#email").val();
// paste below code in server.main.js -> in Meteor.startup function.
/* Accounts.urls.resetPassword = function(token) {
return Meteor.absoluteUrl('reset-password/' + token);
};*/
Accounts.forgotPassword({email:email},function (error,result) {
if(error)
{
alert(error);
}
else
{
console.log(result);
alert("mail sent ..!! Check your mail box");
FlowRouter.go('/login');
}
});
}
});
3)服务器文件夹中main.js文件中的以下代码粘贴 导入'../ server / smtp';
Meteor.startup(() => {
// code to run on server at startup
Accounts.urls.resetPassword = function(token) {
return Meteor.absoluteUrl('reset-password/' + token);
};
});
检查您的邮件