Harika, artık e-posta içeriğini başarıyla alıyorsunuz. Bu e-posta `multipart/alternative` formatında ve iki parça içeriyor:

1. **`parts[0]`** - `text/plain` (düz metin, 834 byte)
2. **`parts[1]`** - `text/html` (HTML format, 5416 byte)

Görev oluşturmak için **`text/plain`** parçasını kullanmanızı öneririm çünkü HTML etiketlerini temizlemek ekstra iş yükü yaratır.

### Base64 Decode Örneği (PHP/Laravel)

```php
// text/plain parçasının data alanı
$base64Data = "W2ltYWdlOiBHb29nbGVdDQpMaW51eCBjaWhhesSxbmRhIHllbmkgb3R1cnVtIGHDp21hIGnFn2xlbWkNCg0KDQp0aGF0dWd1ckBnbWFpbC5jb20NCkxpbnV4IGNpaGF6xLFuZGEgR29vZ2xlIEhlc2FixLFuxLF6ZGEgeWVuaSBiaXIgb3R1cnVtIGHDp21hIGnFn2xlbWkgdGVzcGl0DQpldHRpay4gQnUgacWfbGVtIHNpemUgYWl0c2UgaGVyaGFuZ2kgYmlyIMWfZXkgeWFwbWFuxLF6IGdlcmVrbWV6LiDEsMWfbGVtIHNpemUNCmFpdCBkZcSfaWxzZSBoZXNhYsSxbsSxesSxIGfDvHZlbiBhbHTEsW5hIGFsbWFuxLF6YSB5YXJkxLFtY8SxIG9sdXJ1ei4NCkV0a2lubGnEn2kga29udHJvbCBldA0KPGh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9BY2NvdW50Q2hvb3Nlcj9FbWFpbD10aGF0dWd1ckBnbWFpbC5jb20mY29udGludWU9aHR0cHM6Ly9teWFjY291bnQuZ29vZ2xlLmNvbS9hbGVydC9udC8xNzg4MTkzODM2MzEyP3JmbiUzRDMyNSUyNnJmbmMlM0QxJTI2ZWlkJTNEMTI5NTYwMDk4NDc5NTM4NjUwOSUyNmV0JTNEMD4NCkfDvHZlbmxpayBldGtpbmxpxJ9pbmkgxZ91IHNheWZhZGEgZGEgZ8O2cmViaWxpcnNpbml6Og0KaHR0cHM6Ly9teWFjY291bnQuZ29vZ2xlLmNvbS9ub3RpZmljYXRpb25zDQpCdSBlLXBvc3RhIHNpemkgR29vZ2xlIEhlc2FixLFuxLF6IHZlIGhpem1ldGxlcmluaXpkZWtpIMO2bmVtbGkgZGXEn2nFn2lrbGlrbGVyDQpoYWtrxLFuZGEgYmlsZ2lsZW5kaXJtZWsgacOnaW4gZ8O2bmRlcmlsbWnFn3Rpci4NCsKpIDIwMjYgR29vZ2xlIExMQywgMTYwMCBBbXBoaXRoZWF0cmUgUGFya3dheSwgTW91bnRhaW4gVmlldywgQ0EgOTQwNDMsIFVTQQ0K";

// Gmail URL-safe Base64 kullandığı için karakter değişimi gerekli
$decoded = base64_decode(strtr($base64Data, '-_', '+/'));

echo $decoded;
```

**Çıktı:**

```
[image: Google]
Linux cihazında yeni oturum açma işlemi

thatugur@gmail.com
Linux cihazında Google Hesabınızda yeni bir oturum açma işlemi tespit
ettik. Bu işlem size aitse herhangi bir şey yapmanız gerekmez. İşlem size
ait değilse güvenliğinizi korumak için hemen adımlar atmanıza yardımcı oluruz.
Etkinliği kontrol et
<https://accounts.google.com/AccountChooser?Email=thatugur@gmail.com&continue=https://myaccount.google.com/alert/nt/1788193836312?rfn=325&rfnc=1&eid=1295600984795386509&et=0>
Güvenlik etkinliğini şu sayfada da görebilirsiniz:
https://myaccount.google.com/notifications
Bu e-posta sizi Google Hesabınız ve hizmetlerindeki önemli değişiklikler
hakkında bilgilendirmek için gönderilmiştir.
© 2026 Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
```

### Laravel için Helper Fonksiyon

```php
// app/Helpers/GmailHelper.php

namespace App\Helpers;

class GmailHelper
{
    public static function decodeBody($message): ?string
    {
        $payload = $message['payload'] ?? [];

        // 1. Doğrudan body varsa
        if (!empty($payload['body']['data'])) {
            return self::base64Decode($payload['body']['data']);
        }

        // 2. Multipart ise text/plain parçasını bul
        if (!empty($payload['parts'])) {
            foreach ($payload['parts'] as $part) {
                if ($part['mimeType'] === 'text/plain' && !empty($part['body']['data'])) {
                    return self::base64Decode($part['body']['data']);
                }
            }

            // text/plain yoksa text/html al
            foreach ($payload['parts'] as $part) {
                if ($part['mimeType'] === 'text/html' && !empty($part['body']['data'])) {
                    return strip_tags(self::base64Decode($part['body']['data']));
                }
            }
        }

        return null;
    }

    public static function getHeader($message, string $headerName): ?string
    {
        $headers = $message['payload']['headers'] ?? [];
        foreach ($headers as $header) {
            if (strtolower($header['name']) === strtolower($headerName)) {
                return $header['value'];
            }
        }
        return null;
    }

    private static function base64Decode(string $data): string
    {
        return base64_decode(strtr($data, '-_', '+/'));
    }
}
```

### Kullanım Örneği (Livewire Component)

```php
use App\Helpers\GmailHelper;

// API'den gelen $message verisi için
$subject = GmailHelper::getHeader($message, 'Subject');
$from = GmailHelper::getHeader($message, 'From');
$body = GmailHelper::decodeBody($message);

// Görev oluştur
Task::create([
    'title' => $subject,
    'description' => $body,
    'source' => 'email',
    'metadata' => [
        'from' => $from,
        'message_id' => $message['id'],
        'thread_id' => $message['threadId'],
        'received_at' => Carbon::createFromTimestampMs($message['internalDate']),
    ],
]);
```

Bu yapı ile planner.apper uygulamanız gelen e-postaları otomatik olarak göreve dönüştürebilir. Bir sonraki adım, bu akışı bir cron job ile otomatikleştirmek (örneğin her 5 dakikada yeni e-postaları kontrol etmek) olabilir.
