无法使用 Parse Cloud Code 和 Mandrill 发送电子邮件

Posted

技术标签:

【中文标题】无法使用 Parse Cloud Code 和 Mandrill 发送电子邮件【英文标题】:Can't send an email with Parse Cloud Code and Mandrill 【发布时间】:2014-09-18 09:38:49 【问题描述】:

刚接触编码,以前从未使用过 Cloud Code。

当有人使用 Parse Cloud Code 在我的网页上以表单形式提交他们的电子邮件但我无法让它工作时,我需要发送一封确认电子邮件。我正在使用 Mandrill 云模块发送电子邮件。

我的问题是 -

a) 我是否正确调用云函数? b) 唯一改变的变量是人员的电子邮件地址。我是否正确传递了该变量?

示例代码真的很有帮助。

谢谢

这是我的云代码:

Parse.Cloud.define("introEmail", function(request, response) 
var Mandrill = require('mandrill');
Mandrill.initialize('*************');

mandrill.sendEmail(
message: 
  text: "Hello!",
  subject: "Thanks for Signing Up!",
  from_email: "Test@Test.com",
  from_name: "Chad",
  to: [
    
      email: request.params.Address,
      name: ""
    
  ]
,
async: true
, 
success: function(httpResponse)  response.success("Email sent!"); ,
error: function(httpResponse)  response.error("Uh oh, something went wrong"); 
);
);

这是我的 JS 代码:

$(".input-group-btn").click(function() 
    console.log("Notify Me");

    var Address = $(".form-control").val();

    var Email = Parse.Object.extend("Email");
    var email = new Email();

    email.set("Address", Address);

    console.log(Address);

    email.save(null, 
        success: function(email) 
            console.log('New object created with objectId: ' + email.id);
            Parse.Cloud.run(introEmail,Address)

        ,
        error: function(email, error)              
            alert('Could not accept email address: ' + error.message);
        
    );

);

【问题讨论】:

【参考方案1】:

a) 使用 Parse.Cloud.run() 调用 Cloud 函数,但是,您必须传递名称、数据和选项。它们是“introEmail”(云函数的名称)、变量 Address: $(".form-control").val() 和成功/错误处理程序。

b)查看

Parse.Cloud.define("introEmail", function(request, response) 
var mandrill = require("mandrill");
mandrill.initialize('*************');

  mandrill.sendEmail(
    message: 
      text: "Hello!",
      subject: "Thanks for Signing Up!",
      from_email: "Test@Test.com",
      from_name: "Test",
      to: [
        
          email: request.params.Address,
          name: ""
        
      ]
    ,
    async: true
  , 
    success: function(httpResponse)  response.success("Email sent!"); ,
    error: function(httpResponse)  response.error("Uh oh, something went wrong"); 
  );
);

这是客户端的 JS:

$(".input-group-btn").click(function() 
    console.log("Notify Me");

    var Address = $(".form-control").val();

    var Email = Parse.Object.extend("Email");
    var email = new Email();

    email.set("Address", Address);

    console.log(Address);

    email.save(null, 
        success: function(email) 
        // Execute any logic that should take place after the object is saved.
        console.log('New object created with objectId: ' + email.id);
        // Invoke our cloud function, using the phone number in the text field
        Parse.Cloud.run('introEmail', 
            Address: $(".form-control").val()
            , 
                // Success handler
                success: function(message) 
                    alert('Success: ' + message);
                ,
                // Error handler
                error: function(message) 
                    alert('Error: ' + message);
                
            );
        
    );
);

【讨论】:

以上是关于无法使用 Parse Cloud Code 和 Mandrill 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Parse Cloud Code 从数组中删除对象

向用户添加数据,然后使用 Parse Cloud Code 保存它们

解析 Cloud Code 关系查询语法

使用 Parse Code Cloud Javascript 函数更改 Parse 列的值

将 Parse Cloud Code 与 Parse Server Heroku 一起使用

如何使用 Cloud Code 删除 Parse.com 中的角色