2015-10-27 95 views
0

我已經閱讀了幾篇有關使用Mandrill與Meteor.js進行電子郵件驗證的SO帖子,但我發現了一個問題,沒有其他人似乎要面對。完整的電子郵件驗證流星使用Mandrill

最終,我想要在點擊電子郵件驗證網址後將用戶的verified屬性設置爲true。我使用Mandrill發送包含verification_url的自定義電子郵件模板。我已經添加了accounts-passwordaccounts-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已被調用,這是因爲accounts-ui顯然是爲我調用它。如何使用Mandrill在Meteor.js中進行適當的電子郵件驗證?

回答

0

終於明白了。取而代之的是線的

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

我應該

content: url 

流星以來已經爲我創造了驗證網址,並使其通過功能的「URL」的說法取代它。顯然我不需要推薦代碼