1

最近、クライアントの電子メール送信に Mandrill を使い始めました。クライアントの Web サイトはサーバー側のプログラムを使用しないため、すべてのロジックはクライアント側にある必要があります。

私が今持っているものは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 ラッパーを使用していますが、jQuery ajax POST で試してみたところ、同じ結果が得られました。

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 をサポートする必要がある場合は、1.x バージョンの jQuery を使用する必要があります。すべての 2.x バージョンは、従来のブラウザーをサポートしていません ( http://jquery.com/browser-support/を参照)。

JSBin: http://jsbin.com/UyehELo/2/editに実例を投稿しました。残念ながら私は IE や Android にアクセスできないため、iOS のみをテストしました。この例では、コンソールに簡単にアクセスできないモバイル デバイスでも API 応答を確認できます。

PS。クライアント側で mandrill を使用することは、通常、API キーを公開して誰でも取得してメールを送信できるようにするため、最善の方法ではないことに注意してください。

于 2013-10-09T00:35:20.860 に答える