在 Parse 服务器 CloudCode 中使用已初始化的邮件适配器

Posted

技术标签:

【中文标题】在 Parse 服务器 CloudCode 中使用已初始化的邮件适配器【英文标题】:Using already initialised mailadapter in Parse server CloudCode 【发布时间】:2016-04-07 23:03:21 【问题描述】:

使用 parse-server 2.2.6,如何在云代码中使用 SimpleMailgunAdapter?

我像这样初始化我的解析服务器:

var api = new ParseServer(
  databaseURI: databaseUri,
  cloud: process.env.CLOUD_CODE_MAIN,
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret!
  serverURL: process.env.SERVER_URL,  // Don't forget to change to https if needed
  appName: 'AppName',
  publicServerURL: process.env.SERVER_URL,
  verifyUserEmails: true,
  emailAdapter: 
    module: 'parse-server-simple-mailgun-adapter',
    options: 
        fromAddress: 'mymail@mail.com',
        apiKey: process.env.MAILGUN_API_KEY,
        domain: process.env.MAILGUN_DOMAIN
    
  
);

这是有效的(即正在发送验证电子邮件)

现在我想从云代码发送电子邮件,而不创建新的 SimpleMailgunAdapter。

我今天使用的:

var SimpleMailgunAdapter = require('parse-server-simple-mailgun-adapter');

  var adapter = SimpleMailgunAdapter(
    apiKey: process.env.MAILGUN_API_KEY,
    domain: process.env.MAILGUN_DOMAIN,
    fromAddress: 'mymail@email.com'
  )

这是有效的。但我觉得最好的方法是从我的解析实例中获取已经初始化的邮件适配器。但我不知道该怎么做。这会被认为是最佳做法,还是我可以坚持我的解决方案?

【问题讨论】:

【参考方案1】:

您可以使用 mailgun 从您的云代码发送电子邮件。

首先你需要安装 npm 模块 [https://www.npmjs.com/package/mailgun-js]

通过使用此命令:

npm install mailgun-js --save

然后更新您的服务器(我使用 AWS elasticbeanstalk)

然后在你的 main.js 文件中,通过

初始化mailgun
var mailgun = require('mailgun-js')(apiKey: 'XXX', domain: 'XXX.com');

然后创建云代码函数

    Parse.Cloud.define("sendEmail", function(request, response) 

    console.log("sendEmail " + new Date());


    var emailBody = request.params.emailBody;
    var emailSubject = request.params.emailSubject;
    var fromName = request.params.fromName;
    var fromEmail = request.params.fromEmail;
    var toEmail = request.params.toEmail;
    var toName = request.params.toName;

    var fromString = fromName + " <"+fromEmail+">";
    var toString = toName + " <"+toEmail+">"

    console.log("emailBody " + emailBody);
    console.log("emailSubject " + emailSubject);
    console.log("fromName " + fromName);
    console.log("fromEmail " + fromEmail);
    console.log("toEmail " + toEmail);
    console.log("toName " + toName);    

    var data = 
        from: fromString,
        to: toString,
        subject: emailSubject,
        html: emailBody
    ;

    mailgun.messages().send(data, function (error, body) 
        if (error) 
            console.log("got an error in sendEmail: " + error);
            response.error(err);
        else 
            console.log("email sent to " + toEmail + " " + new Date());
            response.success("Email sent!");
        
    );
);

【讨论】:

以上是关于在 Parse 服务器 CloudCode 中使用已初始化的邮件适配器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Parse.com Cloudcode 发送推送通知

在 Parse CloudCode 中删除对象的所有子项

将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)

Parse.com cloudcode 从不输入成功/错误

解析服务器 + 云代码:Parse.Object 上的 beforeSave()

Parse 的 javascript CloudCode 的 httprequest 字符串操作添加额外的反斜杠