Javascript 使用Meteor和Mailgun恢复密码
我在自己的用户帐户系统中工作,它几乎完成了。。。但我现在的问题是恢复/遗忘模块 我已经学习了本教程,但是当我以忘记密码的形式提交邮件时,邮件不会被发送 我使用邮枪作为邮件服务器。通过控制台,我没有收到任何错误(我收到了我的自定义邮件“已发送电子邮件。请检查您的邮箱”) 我认为Accounts.forgotPassword方法和error函数可以正常工作,因为如果我尝试输入错误的邮件,或者更改process.env.mail\u URL变量进行身份验证,Accounts.forgotPassword会正确地处理错误……但我的问题是,即使函数告诉我邮件发送正确,忘记的邮件也不会发送 邮件服务器工作正常,因为当我测试通过控制台向Mailgun服务器发送邮件时,邮件已正确发送 我已经检查了我的邮枪仪表板,但我没有看到发送的邮件 有什么建议吗?提前感谢,新年快乐!! 这是我的密码 客户端jsJavascript 使用Meteor和Mailgun恢复密码,javascript,meteor,mailgun,forgot-password,Javascript,Meteor,Mailgun,Forgot Password,我在自己的用户帐户系统中工作,它几乎完成了。。。但我现在的问题是恢复/遗忘模块 我已经学习了本教程,但是当我以忘记密码的形式提交邮件时,邮件不会被发送 我使用邮枪作为邮件服务器。通过控制台,我没有收到任何错误(我收到了我的自定义邮件“已发送电子邮件。请检查您的邮箱”) 我认为Accounts.forgotPassword方法和error函数可以正常工作,因为如果我尝试输入错误的邮件,或者更改process.env.mail\u URL变量进行身份验证,Accounts.forgotPasswor
//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;
},
});
process.env.MAIL_URL = 'postmaster@sandbox757c0ce5316a4945a22181bb9b4060e9.mailgun.org:MyPassword@smtp.mailgun.org:587';
服务器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;
},
});
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>
&时代;
恢复密码
电子邮件:
提交
还没有成为会员
接近
{{#如果重置密码}
{{/if}
至少有一个问题是进程.env.MAIL\u URL
必须是uri编码的,并且需要以smtp://
开头。另外,我将端口设置为465而不是587,但我在前一段时间就这样做了,所以可能两者都尝试一下
试试这个:
smtp = {
username: 'postmaster@sandbox757c0ce5316a4945a22181bb9b4060e9.mailgun.org',
password: 'MyPassword',
server: 'smtp.mailgun.org',
port: 587
}
process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
希望这有帮助。Ouup!!我是个哑巴!!;)你救了我的命非常感谢。它工作得很好!右MAIL\u URL最后是MAIL\u URL=smtp://postmaster@sandbox757c0ce5316a4945a22181bb9b4060e9.mailgun.org:d4ba89f36403b402f5717fc5e28cb769@smtp.mailgun.org:587';