【发布时间】:2014-08-31 11:18:52
【问题描述】:
我正在尝试在 Javascript 中创建一个数组(用于我的 Parse.com 云代码),这将使我能够将我从我的 java 应用程序传递的字符串数组中的每个字符串配对到一个名为“电子邮件”的键。这样,我可以将 Mandrill 的消息发送的“收件人”属性设置为多封电子邮件。
我函数的第一行,var recipientJavaArray = request.params.toEmail.split(",");
是我尝试将传入的 Java JSON 字符串(从 Java 字符串数组格式化)转换为 Javascript 字符串数组。
之后的 for 循环是我尝试创建一个新的二维数组,其中它们本质上是键值对:“email”=>“sample@gmail.com”
我在这个转换过程中做错了什么,它似乎没有工作?控制台日志仍然报告它已成功发送电子邮件以发送到 Mandrill 的服务器:
I2014-07-10T06:34:40.618Z] v8:运行云函数 sendEmail 与: 输入:{"fromEmail":"k*****@gmail.com","toEmail":"[\"k*****@gmail.com\",\"a****** *****@gmail.com\"]","text":"示例测试文本","fromName":"示例测试名称","toName":"示例收件人姓名","主题":"测试5"} 结果:电子邮件已发送!
这是我传入的 JSON 字符串的 Java 代码,以及我如何将字符串数组转换为 JSON 字符串。也许我在这里做错了什么?
Gson converter = new Gson();
String recipientsInJson = converter.toJson(recipients);
params.put("toEmail", recipientsInJson);
完整的 Javascript 函数如下,用于上下文:
Parse.Cloud.define("sendEmail", function(request, response) {
var recipientJavaArray = request.params.toEmail.split(",");
var recipientArray = new Array();
for (var i = 0; i < recipientJavaArray.length; i++) {
var oneRecipient = new Array();
oneRecipient["email"] = recipientJavaArray[i];
recipientArray.push(oneRecipient);
}
var Mandrill = require('mandrill');
Mandrill.initialize('1C7****************OQ');
Mandrill.sendEmail({
message: {
text: request.params.text,
subject: request.params.subject,
from_email: request.params.fromEmail,
from_name: request.params.fromName,
/*THIS is what I am trying to get to work. It is an array struct.*/
to: recipientArray
},
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");
}
}); });
关于 Mandrill 中的“to”参数到底是什么以及它是由什么组成的文档,可以在这里找到: https://mandrillapp.com/api/docs/messages.html
也许有比我目前尝试做的更好的方法来做到这一点?就像用 Java 中的数组(或 HashMap?)中的“email”键匹配电子邮件字符串并将其带到 Javascript 并将其转换回标准 Javascript 数组?这甚至可能吗?如果是这样,我该怎么做? 任何帮助将不胜感激。
【问题讨论】:
标签: java javascript arrays json mandrill