AngularJS - 运行 山魈服务

AngularJS - Run mandrill service

我正在构建一个小应用程序,它需要每隔一小时左右通过 mandrill 发送邮件。我想将执行此操作的函数绑定到应用程序中的正确位置。

基本上,我有一个 dates/times 的 Firebase 参考,每小时,我需要 Mandrill 运行 通过那个 Firebase 数组并相应地发送电子邮件。我有一个可以使用的简单 Mandrill 服务,只需要知道放置实际发送逻辑的最佳位置。

基本山魈服务:

.factory('mandrill', function() {
       return {
         initMandrill: function() {
           return new mandrill.Mandrill('XXX', true);
         }
       };
     });

您可以使用 Mandrill JSON API 执行如下操作。您可以从针对您的 Firebase 的工厂调用它,传入您要分发的对象数据。

.factory('Mandrill', ['$http',
    function($http) {

      /*=======================*/
      /*  Insert Emails Here
      /*=======================*/

      var fromEmail = 'email';
      var fromName = 'email_name';
      var replyTo = 'email';

      return {
        messageWork: function(resp) {
          return $http.post('https://mandrillapp.com/api/1.0//messages/send.json', {
            'key': mandrillkey,
            'message': {
              'html': '<p>Unknown Message</p><p>' + resp + '</p><p>Code:' + resp.messagetext + '</p>',
              'text': resp,
              'subject': 'Unknown Message',
              'from_email': fromEmail,
              'from_name': fromName,
              'to': [
              {
                'email': resp.toEmail,
                'name': resp.toName,
                'type': 'to'
              }
              ],
              'headers': {
                'Reply-To': replyTo
              }
            }
          })
          .success(function(data, status, headers, config){
            // log success
          });
        }
      };
  }]);

我想知道 Angular 是否是此类工作的最佳用例,因为 a) 您规定的时间限制(每小时)和 b) 在客户端代码中暴露了您的 Mandrill 密钥。 If you look at the integration options,他们提供了一些后端解决方案。

我建议您考虑使用 Node 来完成此类工作,node-schedule or later would handle your timing patterns, and Mandrill has a node API as does Firebase。只是一个想法。