【发布时间】:2016-04-05 11:24:19
【问题描述】:
我正在使用自己的用户帐户系统,它几乎完成了......但我现在的问题是恢复/忘记模块......
我已经按照这个教程reset password with Meteor,但是当我在忘记密码表单中提交我的邮件时邮件没有发送。
我使用 Mailgun 作为邮件服务器。我没有通过控制台收到任何错误(我收到我的自定义消息“已发送电子邮件。检查您的邮箱。”)。
我认为 Accounts.forgotPassword 方法和错误函数工作正常,因为如果我尝试输入错误的邮件,或者更改我的 process.env.MAIL_URL 变量进行身份验证,Accounts.forgotPassword 会正确处理错误......但我的问题是即使功能告诉我邮件已正确发送,也不会发送忘记邮件。
邮件服务器工作正常,因为当我测试通过控制台向我的 Mailgun 服务器发送邮件时,邮件已正确发送。
我检查了我的 Mailgun 仪表板,但我没有看到发送的邮件...
有什么建议吗?提前致谢,新年快乐!! 这是我的代码
客户端 js
//config reset password
if (Accounts._resetPasswordToken) {
Session.set('resetPassword', Accounts._resetPasswordToken);
}
Template.ResetPassword.helpers({
resetPassword: function(){
return Session.get('resetPassword');
}
});
Template.ResetPassword.events({
'submit .resetPasswordForm': function(e, t) {
e.preventDefault();
var resetPasswordForm = $(e.currentTarget),
password = resetPasswordForm.find('#resetPasswordPassword').val(),
passwordConfirm = resetPasswordForm.find('#resetPasswordPasswordConfirm').val();
Accounts.resetPassword(Session.get('resetPassword'), password, function(err) {
if (err) {
console.log('We are sorry but something went wrong.');
} else {
console.log('Your password has been changed. Welcome back!');
Session.set('resetPassword', null);
}
});
return false;
}
});
Template.ForgotPassword.events({
'submit .ForgotPasswordForm': function(e, t) {
e.preventDefault();
var forgotPasswordForm = $(e.currentTarget),
email = forgotPasswordForm.find('#forgotPasswordEmail').val().toLowerCase();
Accounts.forgotPassword({email: email}, function(err) {
if (err) {
if (err.message === 'User not found [403]') {
console.log('This email does not exist.');
} else {
console.log('We are sorry but something went wrong.');
}
} else {
console.log('Email Sent. Check your mailbox.');
console.log(email);
}
});
return false;
},
});
服务器 js
process.env.MAIL_URL = 'postmaster@sandbox757c0ce5316a4945a22181bb9b4060e9.mailgun.org:MyPassword@smtp.mailgun.org:587';
HTML
<template name="ForgotPassword">
<div class="modal fade" id="ForgotPassword" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Recover password</h4>
</div>
<div class="modal-body">
<form class="ForgotPasswordForm" method="post">
<p>email: <input id="forgotPasswordEmail" type="text" name="email" placeholder="email"></p>
<button type="submit" class="btn btn-primary" value="Send">Submit</button>
<p>Not a member yet?<a href="#" class="js-register">Join us!</a></p>
</form>
</div>
<div class="modal-footer">
<!--<p><a href="#" class="btn btn-primary">Login with Facebook</a></p>-->
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<!--<button type="submit" value="Register" class="btn btn-primary js-confirm-register">Save changes</button>-->
</div>
</div>
</div>
</div>
</template>
<!-- template reset password -->
<template name="ResetPassword">
{{#if resetPassword}}
<form class="resetPasswordForm" method="post">
<input id="resetPasswordPassword" name="password" placeholder="New Password" type="password" >
<input id="resetPasswordPasswordConfirm" name="password-confirm" placeholder="Confirm" type="password" >
<input class="btn-submit" type="submit" value="Reset">
</form>
<!-- end #reset-password-form -->
{{/if}}
</template>
【问题讨论】:
标签: javascript meteor mailgun forgot-password