微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 PHP 中格式化来自 gmail api 的正文?

如何解决如何在 PHP 中格式化来自 gmail api 的正文?

我正在使用来自 Google Cloud Console Gmail API 的凭据和令牌从 gmail API 获取多个数据。在这里,我从 API 获取数据:

  public function listMessages()
    {
$service = new Google_Service_Gmail($this->client);

    // Print the labels in the user's account.
    $userId = 'me';

    $pagetoken = NULL;
    $messages = array();
    $opt_param = array();
    $i =0;
    do{
        if ($i == 5) break;
        $i++;
        try {
            if ($pagetoken){
                $opt_param['pagetoken'] = $pagetoken;
            }
            $messageResponse = $service->users_messages->listUsersMessages($userId,$opt_param);
            if ($messageResponse->getMessages()){
                $messages = array_merge($messages,$messageResponse->getMessages());
                $pagetoken = $messageResponse->getNextPagetoken();
            }
        }
        catch (Exception $e){
            print 'An error occurred: '. $e->getMessage();
        }
    }while ($pagetoken);

    $list = $service->users_messages->listUsersMessages('me',[
        'maxResults' => 10
    ]);
    $messageList = $list->getMessages();
    $inBoxMessage = [];
    foreach ($messageList as $message){
//            print 'Message with ID: ' . $message->getId() . '<br/>';
        $msg = $service->users_messages->get($userId,$message->getId());

        $parts = $msg->getPayload()->getParts();
        $message_id =$message->getId();
        $headers = $msg->getPayload()->getHeaders();
        $snippet = $msg->getSnippet();

        foreach($headers as $single) {
            if ($single->getName() == 'Subject') {
                $message_subject = $single->getValue();
            } elseif ($single->getName() == 'Date') {
                $message_date = $single->getValue();
                $message_date = date('M jS Y h:i A',strtotime($message_date));
            } elseif ($single->getName() == 'From') {
                $message_sender = $single->getValue();
                $message_sender = str_replace('"',NULL,$message_sender);
                $message_sender = str_replace("\'",$message_sender);
            }
        }

        if (count($parts) > 0){
            //$data = $msg->getPayload()->getParts()[0]->getBody()->getData();
            $data = $parts[0]->getBody()->getData();
        }
        else{
            $data = $msg->getPayload()->getBody()->getData();
        }

        $out = str_replace("-","+",$data);
        $out = str_replace("_","/",$out);
        $body = base64_decode($out);

        $inBoxMessage[] = [
            'messageId' => $message_id,'messageSnippet' => $snippet,'messageSubject' => $message_subject,'messageDate' => $message_date,'messageSender' => $message_sender,'messageBody' => $body
        ];

    }
    return  $inBoxMessage;
}
}

在这里展示它:

    public function go()
    {
        $conn = new Connection();

        if ($conn->is_connected()){
            $gmail = new Gmail($conn->get_client());
            return $gmail->listMessages();
        }
        else{
            return $conn->get_unathuenticated_data();
        }
    }


$ID = $_GET['id'];
$Main = new Main();
$aData = $Main->go();


<div class="container mt-5">
                            <?PHP print $aData[$ID]['messageBody']; ?>
                        </div>

但是身体是这样来的:

message body image

我希望它的格式很好,就像在 Gmail 中一样。请问我该怎么做?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。