Mandrill with parse server not working on heroku migration

痞子三分冷 提交于 2019-12-13 01:43:39

问题


I have migrate app from parse.com to heroku with mLab and everything works fine except cloud code.

I am using Mandrill for sending email from parse cloud code which is not working with heroku

Here is what I have done so far:

  1. Installed mandrill ~0.1.0 into parse-server-example and push the code to heroku app
  2. Put the cloud code into '/cloud/main.js'
  3. Called the function from iOS app which respond error as: [Error]: Invalid function. (Code: 141, Version: 1.13.0).

Here is my code script:

Parse.Cloud.define("sendMail", function(request, response) {
                   var Mandrill = require('mandrill');
                   Mandrill.initialize('xxxxxx-xxxxx');

                   Mandrill.sendEmail({
                                      message: {
                                      text: "ffff",
                                      subject: "hello",
                                      from_email: "xxxxx@gmail.com",
                                      from_name: "pqr",
                                      to: [
                                           {
                                           email: "xxxxxxxxxx@gmail.com",
                                           name: "trump"
                                           }
                                           ]
                                      },
                                      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");
                                      }
                                      });
                   });

But after calling 'sendMail' function I am getting this error:

[Error]: Invalid function. (Code: 141, Version: 1.13.0). ================================== MailGun ==========================

Parse.Cloud.define('hello', function(req, res) {

    var api_key = 'key-xxxxxxxxxxxxxx';
    var domain = 'smtp.mailgun.org';
    var mailgun = require('mailgun-js')({apiKey: api_key, domain: domain});

    var data = {
                 from: 'xxxxxxxald@gmail.com',
                 to: 'xxxxx8@gmail.com',
                 subject: 'Hello',
                 text: 'Testing some Mailgun awesomness!'
               };

    mailgun.messages().send(data, function (error, body) {
                                           console.log(body);
                                           });
        //res.success(req.params.name);


});

回答1:


I had a similar problem with sendgrid, but I finally find a way around the problem.

I think this steps may help you,

  1. Miss some brackets or some code separator? ( try rewritting the entire code in the main.js )

  2. The app is actually running? ( when you type "heroku open" in the terminal you get the default message? ) - if not check step 1.

  3. If the previous are not working, rollback to a safe build and Add the add-ons in the heroku dashboard instead of installing them yourself, then download the git and do any changes to git and then push.




回答2:


Below I have pasted from cloud code main.js code that is working using Mandrill on heroku parse application to send password recovery e-mail.

in cloud code main.js:

var mandrill_key = process.env.MANDRILL_KEY;

var Mandrill = require('mandrill-api/mandrill');

var mandrill_client = new Mandrill.Mandrill(mandrill_key);

{
    success: function(gameScore) {
        //alert('New object created with objectId: ' + gameScore.id);

        mandrill_client.messages.send(
        {
            message: {
                html: "<p>Hello " + firstUser.get('fullname') + ",</p><p>We received your request to reset your password.</p><p>Your user name is <strong>" + firstUser.get('username') + "</strong>. Please <a href=\"http://test-sample-app.herokuapp.com/?#/account/reset/password/" + jsonct.ct + "\">click here</a> to create a new password. This link will expire in one hour after this mail was sent</p><p>If you need additional help, just let us know.</p><p>SampleCompany Support<br>customerservice@example.com</p><p>Copyright Sample Company, Inc. 2014-2017</p>",
                subject: "Sample Company Name account recovery",
                from_email: "customerservice@example.com",
                from_name: "Sample Company Name",
                to: [
                    {
                        email: firstUser.get('email'),
                        name: firstUser.get('fullname')
                    }
                ]
            },
            async: true
        },
        //Success
        function(httpResponse) {
            console.log(httpResponse);
            //alert("Email sent!");
        },
        //Failure
        function(httpResponse) {
            console.error(httpResponse);
            //alert("Uh oh, something went wrong");
        });
    },
    error: function(gameScore, error) {
        console.error(error.message);
        //alert('Failed to create new object, with error code: ' + error.message);
    },
    useMasterKey: true
})


来源:https://stackoverflow.com/questions/36207110/mandrill-with-parse-server-not-working-on-heroku-migration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!