Gmail API PHP 客户端库或 api - 如何发送 gmail 草稿?

Gmail API PHP Client Library or api - How do send gmail draft?

我收到了按预定时间发送草稿电子邮件 (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);  

我在 curl 发布后得到如下结果

数组 ( [id] => r-5083530165761240787 ) 但未设置草稿(电子邮件)。

您需要进行以下两项更改 更改 1:在第 3 行,您需要替换

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

更改 2:在第 38 行,您需要替换

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

说明:数据必须以原始格式传递,内容类型为 json。

发送草稿时,您可以选择按原样发送邮件或与更新后的邮件一起发送。如果您要使用新消息更新草稿内容,请在 drafts.send 请求的正文中提供草稿资源;设置要发送的草稿draft.id;并将 draft.message.raw 字段设置为编码为 base64url 编码字符串的新 MIME 消息。有关详细信息,请参阅 drafts.send。

参考:https://developers.google.com/gmail/api/guides/drafts