且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Mailgun + AngularJS + Auhtentication用于HTTP POST请求

更新时间:2023-09-20 17:11:16

终于得到它从本地机器的工作 - 来自不同岗位的集体信息,并使用这个插件 - https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi - 我能够使它发挥作用。那么,这是否插件做什么?我能做到这一点在我的岗位要求?

如果没有,它给我的错误

  XMLHtt prequest无法加载https://api.mailgun.net/v3/sandboxXXXXXXXXXX.mailgun.org/messages。请求头字段授权不受接入控制允许头在preflight响应允许的。


  VAR URL =htt​​ps://api.mailgun.net/v3/sandboxXXXXXXXXXXXXXXX.mailgun.org/messages;
        VAR dataJSON = {
            从postmaster@sandboxXXXXXXXXXXXXXXX.mailgun.org
            以注册recepient
            主题:主题文本
            文字:正文
            多部分:真
        }        VAR REQ = {
            方法:POST,
            网址:网址,
            标题:{
                内容类型:应用程序/ x-WWW的形式urlen codeD,
                '授权':'基本'+ $ base64.en code(API:关键XXXXXXXXXXXXX')
            },
            transformRequest:函数(OBJ){
                无功海峡= [];
                对于(OBJ中的VAR P)
                str.push(EN codeURIComponent(P)+=+ EN codeURIComponent(OBJ [P]));
                返回str.join(与&);
            },
            数据:dataJSON
        }
        $ HTTP(REQ)。然后(功能(数据){
            的console.log(数据);
        },功能(数据){
            的console.log(数据);
        })


  • 东西我失踪了。

  • 多部分

  • 上下文类型

  • 连接codedURIComponent - 为参数

  • 的base64 EN codeD API密钥

I am trying to convert below sample code in angular request.

https://documentation.mailgun.com/user_manual.html#sending-via-api

curl -s --user 'api:YOUR_API_KEY' \
    https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
    -F from='Excited User <mailgun@YOUR_DOMAIN_NAME>' \
    -F to=YOU@YOUR_DOMAIN_NAME \
    -F to=bar@example.com \
    -F subject='Hello' \
    -F text='Testing some Mailgun awesomness!'

I have tried below with Authorization headers which still comes back with Unauthorized error. I see request header has authorization field set with value. What am I doing wrong?

    var url = "https://api.mailgun.net/v3/sandboxXXXXXXXXXXXXXXXXX.mailgun.org/messages";
    var dataFields = {
        to: "verified recepient",
        subject: "subject",
        text: "text",
        from: "postmaster address of sandbox domain"
    }

    var req = {
        method : 'POST',
        url: url,
        headers : {
            'Authorization' : 'Basic api:key-XXXXXXXXXXXXXXXX'
        },
        data: dataFields
    }
    $http(req).then(function(data){
        console.log(data);
    }, function(data){
        console.log(data);
    })

Finally got it working from local machine - collective information from different post and using this plugin - https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi - I was able to make it work. So what does this plugin does? can I do this in my post request?

Without that it gives me error

XMLHttpRequest cannot load https://api.mailgun.net/v3/sandboxXXXXXXXXXX.mailgun.org/messages. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.


var url = "https://api.mailgun.net/v3/sandboxXXXXXXXXXXXXXXX.mailgun.org/messages";
        var dataJSON = {
            from: "postmaster@sandboxXXXXXXXXXXXXXXX.mailgun.org",
            to: "registered recepient",
            subject: "Subject text",
            text: "Body text",
            multipart: true
        }

        var req = {
            method : 'POST',
            url: url,
            headers : {
                'content-type': 'application/x-www-form-urlencoded',
                'Authorization': 'Basic ' + $base64.encode('api:key-XXXXXXXXXXXXX')
            },
            transformRequest: function(obj) {
                var str = [];
                for(var p in obj)
                str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                return str.join("&");
            },
            data: dataJSON
        }
        $http(req).then(function(data){
            console.log(data);
        }, function(data){
            console.log(data);
        })

  • Things which I was missing.
  • Multipart
  • context type
  • encodedURIComponent - for parameters
  • base64 encoded api key