2

根据 API 文档(https://documentation.mailgun.com/api-sending.html)提供了所有相关参数,但它给了我

400 响应:错误请求

这是我的一段代码:

#!/usr/bin/perl

use Mojo::UserAgent;
use MIME::Base64;
use JSON qw(to_json);

use strict;
use warnings;
use v5.10;

my $ua = Mojo::UserAgent->new;
my $endpoint = 'https://api.mailgun.net/v3/sandbox2ad5b70fd744416ea7ff3d5422YYYYYY.mailgun.org/messages';

my $key = 'key-d3d8d350d4ef9c92349df62208XXXXXX';
my $headers = { 'Authorization' => 'Basic ' . encode_base64('api:' . $key)  };
my $params = {
    'to' => 'abc@domain.ru',
    'subject' => 'testing',
    'text' => 'some text',
    'from' => 'postmaster@sandbox2ad5b70fd744416ea7ff3d5422YYYYYY.mailgun.org'
};

my $tx = $ua->post($endpoint, $headers, json => $params);
my $res = $tx->success;
if ($res) {
    say $res->body;
} else {
    my $err = $tx->error;
    die "$err->{code} response: $err->{message}" if $err->{code};
    die "Connection error: $err->{message}";
}

我的 Mojo 版本如下:

Perl (v5.22.1, linux)

Mojolicious(7.26,甜甜圈)

可选的

电动汽车 4.0+ (4.22)

IO::Socket::Socks 0.64+ (0.67)

IO::Socket::SSL 1.94+ (2.024)

Net::DNS::Native 0.15+ (n/a)

我使用这个脚本编写了另一个版本,LWP::UserAgent它工作正常。

是否有一些 Mojo::UserAgent 专家可能知道脚本有什么问题?

更新

这是我的LWP::UserAgent版本,没有问题:

my ($key, $domain, $from, $from_name, $to, $subject, $comments) = @_;

my $url = 'https://api.mailgun.net/v3';
$url = $url . '/' . $domain . '/messages';  

my $ua = LWP::UserAgent->new;
$ua->default_header('Authorization' => 'Basic ' . encode_base64('api:' . $key));

my $data = {
      to => $to,
      subject => $subject,
      text => $comments,
      from =>  $from_name . '<' . $from . '>'        
};

my $r = $ua->post($url, Content => $data);
my $rc = $r->code; 
if ($rc == 200) {
    my $hash = from_json($r->decoded_content);
    say $hash->{id};
    say $hash->{message};       
} else {
    return { error => $rc };
}

更新于 25.02.2017

我对我的localhost:9000. 这是我使用的跟踪nc -l 9000

POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Authorization: Basic YXBpOmtleS1kM2Q4ZDM1MGQ0ZWY5YzkyMzQ5ZGY2MjIwOGRXXXXXX== 
Host: localhost:9000
User-Agent: libwww-perl/6.15
Content-Length: 144
Content-Type: application/x-www-form-urlencoded

text=%3Chtml%3E%3Cbody%3E%3Cp%3Etest%3C%2Fp%3E%3C%2Fbody%3E%3C%2Fhtml%3E&from=John%3Clala%40ya.ru%3E&to=zozoba29a%40yandex.ru&subject=My+Subject

和:

POST / HTTP/1.1
Host: localhost:9000
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YXBpOmtleS1kM2Q4ZDM1MGQ0ZWY5YzkyMzQ5ZGY2MjIwOGRjXXXXXX==

Content-Length: 144
User-Agent: Mojolicious (Perl)

from=John%3Clala%40ya.ru%3E&subject=My+Subject&text=%3Chtml%3E%3Cbody%3E%3Cp%3Etest%3C%2Fp%3E%3C%2Fbody%3E%3C%2Fhtml%3E&to=zozoba29a%40yandex.ru
4

0 回答 0