parse.com云代码无法通过mandrillapp发送电子邮件

时间:2014-06-09 22:44:42

标签: parse-platform mandrill

我试图通过mandrill通过parse.com发送电子邮件。这些例子非常容易理解,但我收到了一个奇怪的错误。

这是我的代码:

  Parse.Cloud.afterSave("ip", function(request) {
  var IPLogger_config = require('cloud/mandrillapp_config.js');
  var Mandrill = require('mandrill');
  Mandrill.initialize(IPLogger_config.mandrillAppKey);

  console.log('within afterSave for ip');
  console.log(request.object.id);


  var ip = Parse.Object.extend("ip");
  var query = new Parse.Query(ip);
  query.descending("createdAt");
  query.limit(2); // limit to at most 2 results
  query.find({
    success: function(results){
      console.log('success query');
      console.log('got ' + results.length + ' results');
      var newestIp = results[0];
      var olderIp = results[1];
      if (newestIp.get('ip') == olderIp.get('ip') ) {
        // the newest ip and the older one are equal, do nothing.
        console.log('No ip change');
      } else
      {
        console.log('ip change!');
        console.log(Mandrill.initialize);
        console.log(Mandrill.sendEmail);

        Mandrill.sendEmail({
        message: {
          text: "The IP of your server has changed! The new ip is: " + newestIp.get('ip') ,
          subject: "The IP of your server has changed!",
          from_email: "parse@cloudcode.com",
          from_name: "IPLogger",
          to: [
            {
              email: IPLogger_config.your_email,
              name: IPLogger_config.your_name
            }
          ]
        },
        async: true
      },{
        success: function(httpResponse) {
          console.log(httpResponse);
          response.success("Email sent!");
        },
        error: function(httpResponse) {
          console.error(httpResponse);
          response.error("Uh oh, something went wrong");
        }
      });




      }
    },
    error: function (error){
      console.log('no success for query');
      console.error("Got an error " + error.code + " : " + error.message);
    }

  });
});

我的mandrillapp_config.js看起来像这样:

var IPLogger_config = {};
IPLogger_config.mandrillAppKey = "xxx";
IPLogger_config.your_email = 'myemail@bla.com';
IPLogger_config.your_name = 'myName';

mandrillAppKey已正确设置。我仔细检查了一下。从mandrill网站发送电子邮件也有效。我刚创建了一个新帐户,并且没有在mandrill网站上进行任何其他设置。

我收到此错误:"code":-1,"name":"ValidationError","message":"You must specify a key value"。在https://www.parse.com/questions/sometimes-getting-mandrill-you-must-specify-a-key-value-error-when-sending-email中写入标题可能有误,但正如您在我的日志中看到的那样,"Content-Type":"application/json; charset=utf-8"已正确设置。

I2014-06-09T22:34:20.601Z] {
    "uuid":"fbb215c4-1d2a-e2da-23fc-a838bd6bf217",
    "status":500,
    "headers":{
        "Access-Control-Allow-Credentials":"false",
        "Access-Control-Allow-Headers":"Content-Type",
        "Access-Control-Allow-Methods":"POST, GET, OPTIONS",
        "Access-Control-Allow-Origin":"*",
        "Connection":"close",
        "Content-Encoding":"gzip",
        "Content-Type":"application/json; charset=utf-8",
        "Date":"Mon, 09 Jun 2014 22:34:20 GMT",
        "Server":"nginx/1.6.0",
        "Vary":"Accept-Encoding",
        "X-Powered-By":"PHP/5.3.10-1ubuntu3.11"
    },
    "text":"{\"status\":\"error\",\"code\":-1,\"name\":\"ValidationError\",\"message\":\"You must specify a key value\"}",
    "data":{"status":"error","code":-1,"name":"ValidationError","message":"You must specify a key value"},
    "buffer":{"0":123,"1":34,"2":115,"3":116,"4":97,"5":116,"6":117,"7":115,"8":34,"9":58,"10":34,"11":101,"12":114,"13":114,"14":111,"15":114,"16":34,"17":44,"18":34,"19":99,"20":111,"21":100,"22":101,"23":34,"24":58,"25":45,"26":49,"27":44,"28":34,"29":110,"30":97,"31":109,"32":101,"33":34,"34":58,"35":34,"36":86,"37":97,"38":108,"39":105,"40":100,"41":97,"42":116,"43":105,"44":111,"45":110,"46":69,"47":114,"48":114,"49":111,"50":114,"51":34,"52":44,"53":34,"54":109,"55":101,"56":115,"57":115,"58":97,"59":103,"60":101,"61":34,"62":58,"63":34,"64":89,"65":111,"66":117,"67":32,"68":109,"69":117,"70":115,"71":116,"72":32,"73":115,"74":112,"75":101,"76":99,"77":105,"78":102,"79":121,"80":32,"81":97,"82":32,"83":107,"84":101,"85":121,"86":32,"87":118,"88":97,"89":108,"90":117,"91":101,"92":34,"93":125,"length":94,
    "parent":{"0":123,"1":34,"2":115,"3":116,"4":97,"5":116,"6":117,"7":115,"8":34,"9":58,"10":34,"11":101,"12":114,"13":114,"14":111,"15":114,"16":34,"17":44,"18":34,"19":99,"20":111,"21":100,"22":101,"23":34,"24":58,"25":45,"26":49,"27":44,"28":34,"29":110,"30":97,"31":109,"32":101,"33":34,"34":58,"35":34,"36":86,"37":97,"38":108,"39":105,"40":100,"41":97,"42":116,"43":105,"44":111,"45":110,"46":69,"47":114,"48":114,"49":111,"50":114,"51":34,"52":44,"53":34,"54":109,"55":101,"56":115,"57":115,"58":97,"59":103,"60":101,"61":34,"62":58,"63":34,"64":89,"65":111,"66":117,"67":32,"68":109,"69":117,"70":115,"71":116,"72":32,"73":115,"74":112,"75":101,"76":99,"77":105,"78":102,"79":121,"80":32,"81":97,"82":32,"83":107,"84":101,"85":121,"86":32,"87":118,"88":97,"89":108,"90":117,"91":101,"92":34,"93":125,"length":94},"offset":0},"cookies":{}}

哪里可以出问题?任何想法如何让它运行?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我终于找到了问题。配置脚本中出现错误。

它需要看起来像这样:

var IPLogger_config = {};
IPLogger_config.mandrillAppKey = "xxx";
IPLogger_config.your_email = 'myemail@bla.com';
IPLogger_config.your_name = 'myName';
exports.IPLogger_config =  IPLogger_config;

main.js文件中,配置文件的资源需要像这样调用:

var config = require('cloud/mandrillapp_config.js');
Mandrill.initialize(config.IPLogger_config.mandrillAppKey);

现在它工作正常。

相关问题