Отправить письмо после успешной регистрации пользователя, используя meteor js
Я хочу добавить функциональность электронной почты в свое приложение. Я добавил пакет электронной почты и выполнил шаги в соответствии с предоставленной документацией
Я хочу, чтобы, когда пользователь регистрировался сам, электронное письмо должно быть отправлено после успешной регистрации.
Вот что я попробовал:
сервер /smtp.js:
Meteor.startup(function () {
smtp = {
username: 'abc@gmail.com', // eg: server@gentlenode.com
password: 'abc123', // eg: 3eeP1gtizk5eziohfervU
server: 'smtp.gmail.com', // eg: mail.gandi.net
port: 25
}
process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});
Вот мой сервер /emp_details.js, где я вызвал методы. следующий код находится внутри Meteor.methods()
:
sendEmail: function (to, from, subject, text) {
check([to, from, subject, text], [String]);
// Let other method calls from the same client start running,
// without waiting for the email sending to complete.
this.unblock();
//actual email sending method
Email.send({
to: to,
from: from,
subject: subject,
text: text
});
}
И, наконец, я вызвал метод на стороне клиента, как показано:
Template.register.onRendered(function()
{
var validator = $('.register').validate({
submitHandler: function(event)
{
var email = $('[name=email]').val();
var password = $('[name=password]').val();
var empProfile = Session.get('profileImage');
console.log(empProfile);
Accounts.createUser({
email: email,
password: password,
profile: {
name:'test',
image: empProfile
},
function(error)
{
if(error)
{
if(error.reason == "Email already exists.")
{
validator.showErrors({
email: "This email already belongs to a registered user"
});
}
}
else
{
Meteor.call('sendEmail',
'alice@example.com',
'abc@example.com',
'Hello from Meteor!',
'This is a test of Email.send.');
Router.go("home");
}
}
});
}
});
});
Я не знаю, как правильно использовать эту функцию электронной почты.
1 ответ
Могу ли я предложить альтернативное решение? Добавьте хук к Accounts.onCreateUser() на стороне сервера, чтобы отправить электронное письмо:
Accounts.onCreateUser(function (options, user) {
Meteor.call(
'sendEmail',
'admin@yoursite.com',
user.profile.email, //use the path to the users email in their profile
'Hello from Meteor!',
'This is a test of Email.send.'
);
});
Вы на самом деле используете Gmail? Порт SMTP для Google - 465, я думаю, а не 25. Подтвердите, что отправка вашей электронной почты работает за пределами метеора, используя эту конфигурацию, а затем попытайтесь сделать это в Метеоре. Я также считаю, что Google ограничивает количество писем, отправляемых через SMTP, до 99 в день, поэтому будьте осторожны с этим. Если вы хотите подтвердить адрес электронной почты пользователя, используйте встроенную систему проверки электронной почты в accounts
пакет.