gpt4 book ai didi

javascript - 无法通过 Mandril 和 Parse-Cloud-Code 发送超过 9 封电子邮件

转载 作者:行者123 更新时间:2023-11-28 07:27:19 29 4
gpt4 key购买 nike

我在使用 mandrill 发送电子邮件模板时遇到问题。我现在的设置是解析服务器上的 javascript,该服务器设置有后台作业,每天使用 mandrill 的 api 向每个用户发送一次电子邮件。我在发送大量电子邮件时遇到了一个问题,由于某种原因,我无法让 mandrill 一次发送超过 9 个电子邮件模板,而需要发送的电子邮件模板超过 400 个。这应该不是问题,因为我已经通过这个帐户发送电子邮件有一段时间了,并且拥有良好的声誉。我尝试延迟电子邮件发送,并更改发送模板的选项,例如使它们异步发送。但最多只能发送 9 个,但无济于事。

exports.FunctionSentDripEmailTemplateFour = function (user,TempateNum,isLastEmail,status,testing){
var mandrillKey = 'my-key';
var Mandrill = require('mandrill');

if(testing){ // send the email to me if testing
EmailParams.message.to[0].email = 'test@email.com';
EmailParams.message.merge_vars[0].rcpt = 'test@email.com';
}else{
EmailParams.message.to[0].email = user.get('email');
EmailParams.message.merge_vars[0].rcpt = user.get('email');
}

EmailParams.message.subject="Subject";
EmailParams.template_name = "Template name";
EmailParams.template_content[0].name = "Template content name";

//console.log("T: " + TempateNum + " M: " + EmailParams.message.to[0].email);
Mandrill.initialize(mandrillKey);
Mandrill.sendTemplate(EmailParams, function(res) {
console.log(res);
}, function(err) {
console.log(err);
});

if(isLastEmail == true){
//(finishes the parse job function)
if(testing){
status.success("Test Email Job completed successfully.");
}else{
status.success("Email Job completed successfully.");
}
}
return new Parse.Promise();
}

另外,我只想亲自发送这些电子邮件,我不想使用复写本,因为我在其他地方使用它并对每封电子邮件进行更改。你有什么想法?这对我来说意义重大。

最佳答案

您的函数正在执行异步网络请求 (Mandrill.sendTemplate()),但它会立即返回,而无需等待此调用完成。

看起来您已经完成了一半的工作,使该功能按预期执行。您应该首先初始化 Parse.Promise,并在函数末尾返回该 Promise 对象。反过来,这个 promise 应该在 Mandrill 代码完成时得到解决。

exports.FunctionSentDripEmailTemplateFour = function (user,TempateNum,isLastEmail,status,testing){
var mandrillKey = 'my-key';
var Mandrill = require('mandrill');

if(testing){ // send the email to me if testing
EmailParams.message.to[0].email = 'test@email.com';
EmailParams.message.merge_vars[0].rcpt = 'test@email.com';
}else{
EmailParams.message.to[0].email = user.get('email');
EmailParams.message.merge_vars[0].rcpt = user.get('email');
}

EmailParams.message.subject="Subject";
EmailParams.template_name = "Template name";
EmailParams.template_content[0].name = "Template content name";

var promise = new Parse.Promise()
//console.log("T: " + TempateNum + " M: " + EmailParams.message.to[0].email);
Mandrill.initialize(mandrillKey);
Mandrill.sendTemplate(EmailParams, function(res) {
console.log(res);
promise.resolve(res);
}, function(err) {
console.log(err);
promise.reject(err);
});

// commented out isLastEmail block - I am not sure this is the right place for that functionality

return promise;
}

您现在可以执行以下操作:

FunctionSentDripEmailTemplateFour(user,templateNum,isLastEmail,status,testing).then(function(result) {
status.success("One email sent successfully");
}, function(err) {
status.error("Failed to send email");
});

重写此代码以发送多封电子邮件作为读者的练习。您应该能够按照 Parse 的 Promises 指南将其重写为一组并行的 Promise。

关于javascript - 无法通过 Mandril 和 Parse-Cloud-Code 发送超过 9 封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496654/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com