Как декодировать электронную почту base64 с php? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь декодировать мое сообщение с помощью метода декодирования Base 64. Кто-нибудь знает, как это сделать, или, может быть, с помощью функции php?

<code><?php

class Gmail
{
    public function __construct($client)
    {
        $this->client = $client;
    }
    public function readLabels()
    {
        $service = new Google_Service_Gmail($this->client);

        // Print the labels in the user's account.
        $user = 'me';
        $results = $service->users_labels->listUsersLabels($user);


        $the_html = "";
        if (count($results->getLabels()) == 0) {
            // print "No labels found.\n";
            $the_html .= "<p>No labels found</p>";
        } else {
            // print "Labels:\n";
            $the_html .= "<p>labels</p>";


            foreach ($results->getLabels() as $label) {
                // printf("- %s\n", $label->getName());
                $the_html .= "<p>" . $label->getName() . "</p>";
            }
            return $the_html;
        }
    }
    /**
     * Get list of Messages in user's mailbox.
     *
     * @param  Google_Service_Gmail $service Authorized Gmail API instance.
     * @param  string $userId User's email address. The special value 'me'
     * can be used to indicate the authenticated user.
     * @return array Array of Messages.
     */
    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();
        $messagesResponse = array();

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

        foreach ($messages as $message) {
            print 'Message with ID: ' . $message->getId() . '<br/>';
            $msg = $service->users_messages->get($userId, $message->getId());
            echo "<pre>" . var_export($msg->payload->parts[1]->body->data->base64_decode, true) . "
";} return $ messages;}}

1 Ответ

0 голосов
/ 13 января 2020

Как упоминалось в комментарии выше @Marvin, попробуйте использовать функцию base64_decode.

Вот пример:

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str); // This is an encoded string

Так что в вашем случае вместо использования

echo "" . var_export($msg->payload->parts[1]->body->data->base64_decode, true) . "
";

try

echo "" . var_export(base64_decode($msg->payload->parts[1]->body->data), true) . "
";

Ссылка

base64_decode

...