๐ Source: sync_emails.php
<?php
require_once 'config.php';
require_once 'database.php';
require_once 'vendor/autoload.php';
session_start();
if (!isset($_SESSION['access_token'])) {
die("Nu eศti autentificat. Logheazฤ-te mai รฎntรขi.");
}
function getEmailBodyContent($service, $messageId) {
try {
$message = $service->users_messages->get('me', $messageId, ['format' => 'full']);
$payload = $message->getPayload();
$decode = function($data) {
return base64_decode(strtr($data, '-_', '+/'));
};
if ($payload->getBody() && $payload->getBody()->getData()) {
$body = $decode($payload->getBody()->getData());
if (!empty(trim($body))) {
$body = strip_tags($body);
$body = preg_replace('/\s+/', ' ', $body);
return substr(trim($body), 0, 2000);
}
}
if ($payload->getParts()) {
foreach ($payload->getParts() as $part) {
if ($part->getBody() && $part->getBody()->getData()) {
$body = $decode($part->getBody()->getData());
if (!empty(trim($body))) {
$body = strip_tags($body);
$body = preg_replace('/\s+/', ' ', $body);
return substr(trim($body), 0, 2000);
}
}
}
}
return "";
} catch (Exception $e) {
return "";
}
}
echo "๐ รncep sincronizarea emailurilor...\n";
$client = new Google\Client();
$client->setAccessToken($_SESSION['access_token']);
$service = new Google\Service\Gmail($client);
$db = new InboxDatabase();
$optParams = ['maxResults' => 500, 'labelIds' => ['INBOX']];
$messages = $service->users_messages->listUsersMessages('me', $optParams);
$count = 0;
if ($messages->getMessages()) {
foreach ($messages->getMessages() as $msg) {
// Verificฤ dacฤ emailul existฤ deja
$existing = $db->getEmails(1, false, 0);
// (implementare simplificatฤ)
$message = $service->users_messages->get('me', $msg->getId(), [
'format' => 'metadata',
'metadataHeaders' => ['From', 'Subject', 'Date']
]);
$headers = $message->getPayload()->getHeaders();
$from = '';
$subject = '';
$date = '';
foreach ($headers as $header) {
if ($header->getName() == 'From') $from = $header->getValue();
if ($header->getName() == 'Subject') $subject = $header->getValue();
if ($header->getName() == 'Date') $date = $header->getValue();
}
try {
$dateObj = new DateTime($date);
$dateObj->setTimezone(new DateTimeZone('Europe/Bucharest'));
$dateFormatted = $dateObj->format('Y-m-d H:i:s');
} catch (Exception $e) {
$dateFormatted = date('Y-m-d H:i:s');
}
$content = getEmailBodyContent($service, $msg->getId());
$email = [
'id' => $msg->getId(),
'thread_id' => $msg->getThreadId(),
'from' => $from,
'subject' => $subject,
'date' => $dateFormatted,
'content' => $content,
'is_read' => 0,
'labels' => ''
];
$db->saveEmail($email);
$count++;
if ($count % 50 == 0) {
echo "โ $count emailuri salvate...\n";
}
}
}
$stats = $db->getStats();
echo "\nโ
Sincronizare completฤ!\n";
echo "๐ง Total emailuri: {$stats['total']}\n";
echo "๐ฌ Necitite: {$stats['unread']}\n";
echo "๐
Cel mai vechi: {$stats['oldest']}\n";
echo "๐ Cel mai nou: {$stats['newest']}\n";
?>
โ Back