2017-10-09 23 views
0

ZohoMailのAPIを使用してアプリケーションからメールを送信しようとしています。しかし、それは私を与え続けて:LaravelのGuzzleでPOSTリクエストを送信

"{のerrorCode": "INVALID_METHODは"}、 "ステータス":{ "コード":404、 "説明": "無効な入力"}}

はここのリンクです私が作るしようとしているコールへ:私は電話を作っている方法を変更しようとしましたが、それはそのようには思えない

public static function sendEmail ($AccountId, $AuthCode, $FromAddress, $ToAddress, $Subject, $Content){ 

    $client = new Client(); //GuzzleHttp\Client 
    $URI = 'http://mail.zoho.com/api/accounts/' . $AccountId . '/messages'; 
    $headers = ['Content-Type' => 'application/json', 'Authorization' => 'Zoho-authtoken ' . $AuthCode]; 
    $body = array('fromAddress' => $FromAddress, 'toAddress' => $ToAddress, 'subject' => $Subject, 'content' => $Content); 
    $Nbody = json_encode($body); 
    $response = $client->post($URI, $headers, $Nbody); 
    echo "DONE!"; 

} 

問題があります:ここではhttps://www.zoho.com/mail/help/api/post-send-an-email.html#Request_Body

を私の機能です。私はPostManでコールをテストしたところ、うまく動作するので、コールを行っている途中で何か問題があった可能性があります。どんな助けでも大歓迎です。

答えて

0

cURLでテストしたところ、URLはhttpではなくhttpsに「移動」されていました。ちょうどhttpを使って、郵便配達で通話は行っていましたが、Guzzleでは通っていませんでした。私が作った唯一の変化は、URLを作ることだった。

https://mail.zoho.com/api/accounts/

ウェブサイトは、単にHTTPリクエストは郵便配達で通過んとしてそれを示しています。私は同じAPIからのGuzzleのhttpでちょうど前の呼び出しを行い、それらは通過しました。誰かが私がなぜこのようなことが起こったのか、そしてhttpを使用しているときのこの特定の呼び出しがGuzzleではなく、Guzzleではないことを理解できるように助けてくれれば嬉しいことです。

0

使用するのTy:あなたは同じ配列内のデータとヘッダを作成し、2番目の引数として渡す必要があり

$response = $client->post($URI, $headers, ['json' => $body]); 

代わりの

$Nbody = json_encode($body); 
$response = $client->post($URI, $headers, $Nbody); 
+0

同じエラーコードを試しました。 – Siddiqui

+0

'$ body'のデータが有効であることを確認しましたか?私は電子メールが本当に電子メールであり、敵の配列ではないことを意味しています –

+0

私は郵便配達員でこれらのパラメータを試しました。 sendEmail(「MyAccountID」、「AuthCode」、「MyEmail」、「MyEmail」、「私はタコスが好き」、「タコスは似ている」) – Siddiqui

0

。このように使用します。

$client = new Client(); 
$URI = 'http://mail.zoho.com/api/accounts/'.$AccountId.'/messages'; 
$params['headers'] = ['Content-Type' => 'application/json', 'Authorization' => 'Zoho-authtoken ' . $AuthCode]; 
$params['form_params'] = array('fromAddress' => $FromAddress, 'toAddress' => $ToAddress, 'subject' => $Subject, 'content' => $Content); 
$response = $client->post($URI, $params); 
echo "DONE!"; 

Good Luck!

+0

ここにあります私が得るもの: POSTリクエストを送信するための配列としての "body"リクエストオプションを渡すことは推奨されていません。 application/x-www-form-urlencodedリクエストを送信するには、 "form_params"リクエストオプションを使用し、multipart/form-dataリクエストを送信するには "multipart"リクエストオプションを使用してください。 – Siddiqui

+0

はい。申し訳ありませんが推奨されていません。 bodyをform_paramsに変更し、再度テストします。 –

+0

ダイスはありません。以前と同じエラーコードです。 – Siddiqui

関連する問題