我在meteor.js和mongo.db上运行了一个应用程序。我使用robomongo作为mongo.db的工具。现在我想做以下事情: 1.有人注册我的服务(向db添加电子邮件) 我想向那个人发送一封自动欢迎电子邮件。
有可能怎么办?
答案 0 :(得分:0)
您需要一个电子邮件服务器(SMTP),然后使用the meteor email library。如果您没有电子邮件服务器而又不想创建电子邮件服务器,请使用商业解决方案。 (Example)
答案 1 :(得分:0)
您可以在此处找到完整的工作示例:http://meteorpad.com/pad/iNMBHtNsv7XKHeq44
请注意,它会在Meteor应用程序中创建新用户,但使用Robomongo或任何其他方式更新MongoDB时效果相同。
首先安装软件包Email
才能使用Email.send
。
在下面的示例中,我假设将新用户添加到集合Meteor.users应该触发发送“邀请”电子邮件。
以非常类似的方式,您可以检测是否已将电子邮件添加到用户对象
(user.emails.length
已更改)然后发送电子邮件。
然后看一下代码:
// SERVER SIDE CODE:
Meteor.startup(function () {
// clean users on app resetart
// Meteor.users.remove({});
if(Meteor.users.find().count() === 0){
console.log("Create users");
Accounts.createUser({
username:"userA",
email:"userA@example.com",
profile:{
invitationEmailSend:false
}
}) ;
Accounts.createUser({
username:"userB",
email:"userB@example.com",
profile:{
invitationEmailSend:false
}
})
}
Meteor.users.find().observe({
added:function(user){
console.log(user.username, user.profile.invitationEmailSend)
if(!user.profile.invitationEmailSend){
Email.send({
from: "from@mailinator.com",
to: user.emails[0].address,
subject: "Welcome",
text: "Welcome !"
});
// set flag 'invitationEmailSend' to true, so email won't be send twice in the future ( ex. during restart of app)
Meteor.users.update({_id:user._id},{$set:{"profile.invitationEmailSend":true}});
}
}
})
});
以上代码会向profile.invitationEmailSend
中没有等于true的标记的用户发送电子邮件。发送电子邮件后,服务器在db中更新用户文档,并将user.profile.invitationEmailSend
设置为true。
无论何时将用户添加到mongoDB(使用Robomongo或任何其他方式),都会执行added
功能,并且只向新用户发送电子邮件。