1

我最近开始使用 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"
            ]

谁能帮助我,如何修复对 Mandrill 的跨域 API 调用?

4

1 回答 1

2

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

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

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

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

于 2013-10-09T00:35:20.860 回答