解析 main.js Mandrill HTML 邮件发送问题
Posted
技术标签:
【中文标题】解析 main.js Mandrill HTML 邮件发送问题【英文标题】:Parse main.js Mandrill HTML mail sending issue 【发布时间】:2014-08-27 08:13:23 【问题描述】:我在 main.js 中的 Parse 上有一个云函数,我在其中以使用 Mandrill API 编码的 html 格式发送邮件。我通过我的 ios 应用程序调用这个函数,发布一些参数,它完全可以,发送电子邮件。但是我想根据用户的语言本地化 HTML 正文。由于我检查了非常棘手的 iOS 内联 HTML 选项,因此我尝试在 main.js 上的 sendMail 函数中执行此操作:
Parse.Cloud.define("sendMail", function(request, response)
var Mandrill = require('mandrill');
Mandrill.initialize('APP_ID');
var locale = request.params.locale;
var userName = request.params.user;
var password = request.params.pass;
var HTMLBodyEn = '<p>text</p>';
var HTMLBody = HTMLBodyEn;
if (locale == 'tr')
HTMLBody = '<p>yazı</p>';
Mandrill.sendEmail(
message:
html: HTMLBody,
subject: request.params.subject,
from_email: request.params.fromEmail,
from_name: request.params.fromName,
to: [
email: request.params.toEmail,
name: request.params.toName
]
,
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");
);
);
嗯,就这么简单。 如果条件你看到那里会导致所有问题...正如你所看到的那样,我收到了一个区域设置密钥来更改正文,但它没有并且 Parse 返回 141 错误代码,这意味着经过一些挖掘是超时异常。
我似乎无法理解一个简单的 if 语句会导致超时。
谁能帮我解决这个问题?遇到过类似的事情吗?
【问题讨论】:
很可能超时是在发送电子邮件时,云函数被限制为 15 秒后被杀死。如果 Mandrill 服务由于某种原因花费的时间过长,您将收到超时异常。 【参考方案1】:您可能会遇到文本编码问题的副作用。 Mandrill SDK on parse 似乎无法处理您正在使用的字符集。看看他们论坛上的这篇文章,它提供了解决该问题的方法。
https://www.parse.com/questions/sometimes-getting-mandrill-you-must-specify-a-key-value-error-when-sending-email
【讨论】:
非常感谢瑞恩!在 Parse 人员解决问题之前,我应该使用此解决方法。以上是关于解析 main.js Mandrill HTML 邮件发送问题的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Mandrill 解析模板中的 Handlebars 标签?