如何仅从客户端使用Mandrillapp API?

时间:2013-10-08 10:31:43

标签: internet-explorer cross-browser cross-domain mailchimp mandrill

我最近开始使用Mandrill进行客户端电子邮件发送。客户端的网站不使用任何服务器端程序,因此每个逻辑都必须在客户端。

我现在所拥有的是Chrome,FireFox,IE10,但不适用于LTE IE9和Android< 4.0既不是IOS:\

m = new mandrill.Mandrill("APIKEY", true)
m.call "messages/send", {
    message:
        html: createHtml()
        subject: "subj"
        from_email: "sender@example.dk",
        from_name: "From",
        to: [
            email: "user@example.com"
            name: "User"
        ]
}, (()->
    console.log "success"
    @
), ()->
    console.log "error"
    @

在这段代码中,我使用的是JS Mandrill API wrapper,但是我尝试使用jQuery ajax POST-ing并得到了相同的结果。

jQuery版本:

$.ajax
    type: "POST"
    url: "https://mandrillapp.com/api/1.0/messages/send.json"
    data:
        key: "APIKEY"
        message:
            html: createHtml()
            subject: "subject"
            from_email: "sender@example.dk",
            from_name: "From",
            to: [
                email: "user@example.com"
                name: "User"
            ]

任何人都可以帮助我,如何修复跨域API调用Mandrill?

1 个答案:

答案 0 :(得分:2)

您的代码似乎有效,因此您可能遇到了浏览器兼容性问题。

Mandrill API包装器在底层使用本机XMLHttpRequest,因此它可能与旧版浏览器不兼容。如果你需要支持IE< 9,你将需要一个1.x版本的jQuery - 所有2.x版本都不再支持旧版浏览器了(参见http://jquery.com/browser-support/)。

我在JSBin上发布了一个工作示例:http://jsbin.com/UyehELo/2/edit。仅测试iOS,因为遗憾的是我无法访问IE或Android。该示例允许您在移动设备上查看API响应,而无法轻松访问控制台。

PS。请记住,在客户端使用mandrill通常不是最好的主意,因为您公开公开您的API密钥,以便任何人都可以接受它并代表您发送电子邮件。