好,所以我正在使用“发布/订阅”订阅,并使用“推入端点URL”来读取来自gmail的电子邮件。
它非常适合短电子邮件,但是一旦电子邮件超过mayber200个字符,它只能读取前100个左右的字符。
这是我的Google API控制台上的屏幕截图
这是接收器文件中的代码
$ch = curl_init('https://www.googleapis.com/gmail/v1/users/me/messages?labelIds=Label_56&maxResults=5');
curl_setopt_array($ch, array(
CURLOPT_POST => false,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '. $tokenval,
'Content-Type: application/json',
),
));
// execute request and get response
$result = curl_exec($ch);
$allmessages = json_decode($result);
$allmessage = $allmessages->messages;
for($i=0;$i<count( $allmessage);$i++)
{
$checkoldmsgid = $this->Customer_m->getCount('messages',array('massageid'=>$allmessage[$i]->id ));
if( $checkoldmsgid ==0)
{
$ch = curl_init('https://www.googleapis.com/gmail/v1/users/me/messages/'.$allmessage[$i]->id);
curl_setopt_array($ch, array(
CURLOPT_POST => false,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '. $tokenval,
'Content-Type: application/json'
),
));
// execute request and get response
$resultm = curl_exec($ch);
$msgval = json_decode($resultm);
$sendernum =explode('@',$msgval->payload->headers[19]->value);
$recivernum =explode('@',$msgval->payload->headers[0]->value);
$createdat = date('Y-m-d H:i:s',strtotime($msgval->payload->headers[18]->value));
要阅读完整的电子邮件,是否需要输入一行代码?
答案 0 :(得分:0)
根据documentation,您可以为格式传递一个可选参数:
可接受的值为:
“完整”:返回完整的电子邮件数据,其有效内容字段中已解析正文内容;未使用原始字段。 (默认)
“元数据”:仅返回电子邮件ID,标签和电子邮件标题。
“最小”:仅返回电子邮件ID和标签;不返回电子邮件标题,正文或有效载荷。
“原始”:返回完整的电子邮件消息数据,其中原始内容中的正文内容为base64url编码的字符串;有效负载字段未使用。
尝试更改端点以包括format
参数:
$id = $allmessage[$i]->id;
$endpoint = "https://www.googleapis.com/gmail/v1/users/me/messages/$id?format=full";
$ch = curl_init($endpoint);