2015-10-27 2 views
0

Я прочитал несколько сообщений SO об использовании Mandrill с Meteor.js для проверки подлинности электронной почты, но я нашел проблему, с которой другие не сталкиваются.полная проверка электронной почты на Meteor с использованием Mandrill

В конечном счете, я хочу, чтобы свойство verified пользователя было установлено в true после нажатия на URL-адрес проверки электронной почты. Я использую Mandrill для отправки настраиваемых шаблонов электронной почты, содержащих check_url. У меня есть пакеты accounts-password и accounts-ui. Мой код выглядит следующим образом:

if (Meteor.isServer) { 
    Meteor.startup(function() { 
    Mandrill.config({ 
     username: process.env.MANDRILL_API_USER, 
     key: process.env.MANDRILL_API_KEY 
     // port: 587, // defaults to 465 for SMTP over TLS 
     // host: 'smtp.mandrillapp.com', // the SMTP host 
     // baseUrl: 'https://mandrillapp.com/api/1.0/' // update this in case Mandrill changes its API endpoint URL or version 
    }); 

    Accounts.config({ 
     sendVerificationEmail: true 
    }); 

    Accounts.emailTemplates.verifyEmail.html = function (user, url) { 
     var referralCode = Random.id(); 
     var result; 
     try { 
     result = Mandrill.templates.render({ 
      template_name: 'email-verification', 
      template_content: [], 
      merge_vars: [ 
      { 
       name: 'SUBJECT', 
       content: 'my fancy subject' 
      }, 
      { name: 'EMAIL', 
       content: 'my fancy email' 
      }, 
      { 
       name: 'VERIFICATION_URL', 
       content: 'http://localhost:3000/?ref=' + referralCode 
      } 
      ] 
     }); 
     } catch (error) { 
     console.error('Error while rendering Mandrill template', error); 
     } 
     return result.data.html; 
    }; 
}); 

Когда я создаю пользователя проверка электронной почты правильно посланный, однако, когда я нажимаю ссылку для подтверждения в пределах электронной почты, ничего не делается на сервере, то я смотрю на MongoDB моего приложения и в документе пользователя все еще есть свойство verified: false. Я попытался работать с onEmailVerificationLink (http://docs.meteor.com/#/full/Accounts-onEmailVerificationLink), но я получил сообщение об ошибке в консоли, в которой уже вызывается onEmailVerificationLink, что происходит, потому что учетные записи ui, по-видимому, называет это для меня. Как сделать правильную проверку электронной почты в Meteor.js с помощью Mandrill?

ответ

0

Наконец-то выяснилось. Вместо линии

content: 'http://localhost:3000/?ref=' + referralCode 

я должен заменить его

content: url 

так Метеор уже создает URL проверки для меня, и передать его в через «URL» аргумента функции. Очевидно, мне не нужен реферальный код либо

Смежные вопросы