Как использовать API Mandrillapp только со стороны клиента?

Недавно я начал использовать 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: "[email protected]",
        from_name: "From",
        to: [
            email: "[email protected]"
            name: "User"
        ]
}, (()->
    console.log "success"
    @
), ()->
    console.log "error"
    @

В этом коде я использую оболочку JS Mandrill API, но пробовал 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: "[email protected]",
            from_name: "From",
            to: [
                email: "[email protected]"
                name: "User"
            ]

Может ли кто-нибудь помочь мне, как исправить вызов междоменного API в Mandrill?


person seniorpreacher    schedule 08.10.2013    source источник


Ответы (1)


Ваш код кажется правильным, поэтому, вероятно, вы столкнулись с проблемой совместимости браузера.

Оболочка API Mandrill использует собственный 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 публично, чтобы любой мог взять его и отправить электронные письма от вашего имени.

person lukaszfiszer    schedule 09.10.2013
comment
Спасибо, я проверю это позже, когда вернусь домой :) Кстати. Я использую jQuery 1.10.2, так что это не должно быть проблемой. А с помощью Mandrill вы можете указать IP-адреса, на которые вы хотите разрешить отправку электронной почты, чтобы хакеры могли использовать его только с того же сайта. - person seniorpreacher; 09.10.2013