我已經閱讀了幾篇有關使用Mandrill與Meteor.js進行電子郵件驗證的SO帖子,但我發現了一個問題,沒有其他人似乎要面對。完整的電子郵件驗證流星使用Mandrill
最終,我想要在點擊電子郵件驗證網址後將用戶的verified
屬性設置爲true。我使用Mandrill發送包含verification_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已被調用,這是因爲accounts-ui顯然是爲我調用它。如何使用Mandrill在Meteor.js中進行適當的電子郵件驗證?