📄 Source: get_email.php
<?php
session_name('INBOXZERO');
session_start();
require_once 'vendor/autoload.php';
header('Content-Type: application/json');
if (!isset($_SESSION['access_token'])) {
echo json_encode(['error' => 'Not authenticated']);
exit();
}
$input = json_decode(file_get_contents('php://input'), true);
$emailId = $input['email_id'] ?? '';
if (!$emailId) {
echo json_encode(['error' => 'No email ID provided']);
exit();
}
try {
$client = new Google\Client();
$client->setAccessToken($_SESSION['access_token']);
$service = new Google\Service\Gmail($client);
$message = $service->users_messages->get('me', $emailId, ['format' => 'full']);
$payload = $message->getPayload();
$decode = function($data) {
return base64_decode(strtr($data, '-_', '+/'));
};
$body = "";
// Get plain text or HTML body
if ($payload->getBody() && $payload->getBody()->getData()) {
$body = $decode($payload->getBody()->getData());
}
if (empty($body) && $payload->getParts()) {
foreach ($payload->getParts() as $part) {
if ($part->getBody() && $part->getBody()->getData()) {
$body = $decode($part->getBody()->getData());
if (!empty(trim($body))) break;
}
if ($part->getParts()) {
foreach ($part->getParts() as $subPart) {
if ($subPart->getBody() && $subPart->getBody()->getData()) {
$body = $decode($subPart->getBody()->getData());
if (!empty(trim($body))) break 2;
}
}
}
}
}
// Clean HTML aggressively
// Remove style blocks
$body = preg_replace('/<style[^>]*>.*?<\/style>/is', '', $body);
// Remove script blocks
$body = preg_replace('/<script[^>]*>.*?<\/script>/is', '', $body);
// Remove HTML tags but keep line breaks
$body = strip_tags($body);
// Decode HTML entities
$body = html_entity_decode($body, ENT_QUOTES | ENT_HTML5, 'UTF-8');
// Remove excessive whitespace
$body = preg_replace('/\s+/', ' ', $body);
// Remove common email footer patterns
$body = preg_replace('/To help keep your profile secure.*$/is', '', $body);
$body = preg_replace('/https?:\/\/[^\s]+/i', '', $body);
$body = preg_replace('/unsubscribe.*$/i', '', $body);
$body = trim($body);
if (strlen($body) > 2000) {
$body = substr($body, 0, 2000) . "\n\n...(truncated)";
}
if (empty($body) || strlen($body) < 10) {
$body = "(No readable content in this email)";
}
echo json_encode(['content' => $body]);
} catch (Exception $e) {
echo json_encode(['error' => $e->getMessage()]);
}
?>
← Back