将Robomongo链接到自动电子邮件发送服务?

时间:2014-08-18 08:53:54

标签: meteor

我在meteor.js和mongo.db上运行了一个应用程序。我使用robomongo作为mongo.db的工具。现在我想做以下事情: 1.有人注册我的服务(向db添加电子邮件) 我想向那个人发送一封自动欢迎电子邮件。

有可能怎么办?

2 个答案:

答案 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功能,并且只向新用户发送电子邮件。