解析 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 解析 facebook 编码问题

解析云代码 Mandrill Promise

如何让 Mandrill 解析模板中的 Handlebars 标签?

可以要求 Mandrill 试运行电子邮件的发送吗? (解析云代码)

部署代码以解析云时出错

在 .NET 中验证 Mandrill 入站 Webhook 请求