2017-10-09 127 views
0

我試圖使用ZohoMail的API通過我的應用程序發送電子郵件。但它一直給我:在Laravel發送帶有Guzzle的POST請求

「{錯誤碼」: 「INVALID_METHOD」}, 「狀態」:{ 「代碼」:404, 「說明」: 「無效的輸入」}}

這裏的鏈接到我試圖撥打電話:https://www.zoho.com/mail/help/api/post-send-an-email.html#Request_Body

這裏是我的功能:

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!"; 

} 

我試圖改變我正在呼叫的方式,但它似乎並不像這就是問題所在。我已經在PostMan中測試過這個通話,並且它工作正常,所以我撥打電話的方式可能有問題。任何幫助將非常感激。

回答

0

經過cURL測試後,我發現URL已經'移動'到https而不是http。只使用http,電話正在郵遞員中進行,但與Guzzle不同。我所做的唯一變化是使網址:

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

該網站列出了它只是HTTP和要求確實與郵差去。我已經使用相同的API在Guzzle中使用http進行了事先調用,並且他們已經完成了。如果有人能夠幫助我理解爲什麼會發生這種情況,並且爲什麼在使用http的情況下使用http的具體調用在PostMan中而不是在Guzzle中,那會很好。

0

泰使用:的

$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」,「我喜歡Tacos」,「Ilike Tacos」); – 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!"; 

祝你好運!

+0

這裏是我得到: 傳遞「body」請求選項作爲數組發送POST請求已被棄用。請使用「form_params」請求選項發送應用程序/ x-www-form-urlencoded請求,或者發送multipart/form-data請求的「multipart」請求選項。 – Siddiqui

+0

是的。對不起,它已被棄用。將body更改爲form_params並再次測試。 –

+0

沒有骰子,與以前相同的錯誤代碼。 – Siddiqui