Javascript 使用Meteor和Mailgun恢复密码

Javascript 使用Meteor和Mailgun恢复密码,javascript,meteor,mailgun,forgot-password,Javascript,Meteor,Mailgun,Forgot Password,我在自己的用户帐户系统中工作,它几乎完成了。。。但我现在的问题是恢复/遗忘模块 我已经学习了本教程,但是当我以忘记密码的形式提交邮件时,邮件不会被发送 我使用邮枪作为邮件服务器。通过控制台,我没有收到任何错误(我收到了我的自定义邮件“已发送电子邮件。请检查您的邮箱”) 我认为Accounts.forgotPassword方法和error函数可以正常工作,因为如果我尝试输入错误的邮件,或者更改process.env.mail\u URL变量进行身份验证,Accounts.forgotPasswor

我在自己的用户帐户系统中工作,它几乎完成了。。。但我现在的问题是恢复/遗忘模块

我已经学习了本教程,但是当我以忘记密码的形式提交邮件时,邮件不会被发送

我使用邮枪作为邮件服务器。通过控制台,我没有收到任何错误(我收到了我的自定义邮件“已发送电子邮件。请检查您的邮箱”)

我认为Accounts.forgotPassword方法和error函数可以正常工作,因为如果我尝试输入错误的邮件,或者更改process.env.mail\u URL变量进行身份验证,Accounts.forgotPassword会正确地处理错误……但我的问题是,即使函数告诉我邮件发送正确,忘记的邮件也不会发送

邮件服务器工作正常,因为当我测试通过控制台向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;
  },
});
 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">&times;</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';