Я прочитал несколько сообщений 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?