2016-08-10 2 views
1

J'ai reçu l'obligation d'envoyer des e-mails rédigés (Gmail) à l'heure prévue. J'ai essayé le code ci-dessous.API Gmail PHP Client Library ou api - Comment envoyer un brouillon gmail?

$access_token = 'ya29.DxswidlwadllsidVeg5B67CdpLN6QR0d1nCuQmg9GaMT9iq8-zIA8O29yR9rEMM'; 
    //the access token is subject to change every hour 
    $header = array('Content-Type: message/rfc822', "Authorization: Bearer $access_token"); 
    $to = '125699645855239833'; // this is a draft id. 
    $line = "\r\n"; 
    $raw=''; 
    $url = 'https://www.googleapis.com/upload/gmail/v1/users/me/drafts?fields=id&key=XsqwwosqldwwdssaOLwotWD6seRloXZM'; 
    $raw .= "id: $to ".$line.$line; 
    $method_type = 1; // set as post method 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($curl, CURLOPT_HEADER, 0); 

    if($header !== 0){ 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
    } 

    if($method_type == 1 or $method_type == 0){ 
    curl_setopt($curl, CURLOPT_POST, $method_type); 
    }else{ 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE"); 
    } 

    if($data !== 0){ 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $raw); 
    } 

    $response = curl_exec($curl); 
    $json = json_decode($response, true); 
    print_r($json); 
    curl_close($curl); 

J'ai obtenu résultat après affichage boucle comme ci-dessous

Array ([id] => r-5083530165761240787), mais le projet (e-mail) n'a pas été défini.

Répondre

1

Vous devez deux modifications suivantes Variation 1: à la ligne n ° 3, vous devez remplacer

Content-Type: message/rfc822 to Content-Type: application/json 

Change 2: à la ligne n ° 38, vous devez remplacer

$raw .= "id: $to ".$line.$line; to $raw = '{ "id": "'.$t.'" }'.$line.$line; 

Expliquer : les données doivent être transmises au format brut avec le type de contenu json.

Lors de l'envoi d'un brouillon, vous pouvez choisir d'envoyer le message tel quel ou avec un message mis à jour. Si vous mettez à jour le contenu du brouillon avec un nouveau message, fournissez une ressource Draft dans le corps de la requête drafts.send; mettre le brouillon du projet à envoyer; et définissez le champ draft.message.raw sur le nouveau message MIME codé en tant que chaîne codée en base64url. Pour plus d'informations, voir le fichier drafts.send.

Référence: https://developers.google.com/gmail/api/guides/drafts

+0

Cela fonctionne pour moi. :) –