- E-postalardan Görüntüleri Neden Çıkarmalıyız?
- Email Görüntü Çıkarma API’si
- ZIP dosyasından resimleri C# .NET kullanarak çıkartın
- Email Görsellerini cURL Kullanarak Çıkarın
- Çevrimiçi E-posta Görüntü Çıkartıcıyı deneyin
Neden E-postalardan Görüntü Çıkartalım?
E-postalar (MSG, EML) genellikle müşteri tarafından gönderilen görüntüler, pazarlama afişleri, satır içi HTML resimleri ve fotoğraf ekleri gibi önemli görseller içerir. Otomatikleştirilmiş çıkarım, size şunu sağlar:
- E-postalardan fotoğrafları manuel çaba olmadan kaydedin.
- Toplu e-postaları işleyin
- İç içe ve CID gömülü resimleri indir
- CRM, destek biletleri, otomasyon ve arşivleme için iş akışlarını geliştirin
- Görsel verileri analiz ve işleme için hazırlayın
Bu makale, bir e-postadan fotoğraf nasıl kaydedilir, e-posta fotoğrafları nasıl kaydedilir ve e-posta üzerinden .NET REST API kullanarak görüntü nasıl indirilir gibi yaygın soruları yanıtlar.
Email Image Extraction API
GroupDocs.Parser Cloud SDK for .NET kullanarak EML ve MSG dosyalarını çözümleyebilir ve içerdikleri her tür görüntüyü çıkarabilirsiniz, bunlar arasında:
- Satır içi gömülü görseller (Base64 / CID)
- CID-referenced HTML görüntüleri
- Ekli fotoğraflar (JPG, PNG, GIF, BMP, TIFF)
Desteklenen formatlar:
- EML — Standart RFC822 e-posta dosyaları.
- MSG — Microsoft Outlook e-posta mesajları.
Ön koşullar
- A GroupDocs Cloud hesabı (Müşteri Kimliği ve Müşteri Sırrı).
- .NET 6.0+ yüklü.
- Visual Studio veya uyumlu IDE.
- NuGet paketi:
GroupDocs.Parser-Cloud
NuGet aracılığıyla yükleyin
dotnet add package GroupDocs.Parser-Cloud --version 25.7.0
E-posta’dan Resimleri C# .NET ile Çıkarma
Aşağıda, bir e-posta dosyasını (EML veya MSG) nasıl yükleyeceğinizi, e-posta içindeki görüntüleri çıkarmak için Görüntü API’sini nasıl çağıracağınızı ve elde edilen fotoğrafları yerel olarak nasıl indireceğinizi gösteren tam bir C# örneği bulunmaktadır. Bu, e-posta’dan resim nasıl kaydedilir ve e-posta fotoğrafı indirme gibi kullanım senaryolarını çözer.
Adım 1 — API’yi Başlat:
var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);
Adım 2 — ZIP Dosyası Bilgilerini ve Seçeneklerini Ayarla:
var fileInfo = new FileInfo { FilePath = "source.eml" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);
tep 3 — Görselleri Çıkarın:
var imagesRequest = new ImagesRequest(options);
var imagesResponse = parserApi.Images(imagesRequest);
// 1. API istemcisini yapılandırın
var config = new Configuration
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET"
};
var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);
// Yerel ve bulut yolları
var localEmailPath = "/Users/you/Downloads/message.eml"; // macOS example
var remoteEmailPath = "inbox/message.eml";
var outputFolder = "extracted-email-images"; // cloud output folder
var localOutputDir = "/Users/you/Downloads/extracted-email-images";
// 2. E-posta dosyasını bulut depolama alanına yükle
using (var fs = File.OpenRead(localEmailPath))
{
var uploadRequest = new UploadFileRequest(path: remoteEmailPath, fileContent: fs);
fileApi.UploadFile(uploadRequest);
Console.WriteLine($"Uploaded {remoteEmailPath} to cloud storage.");
}
// 3. Görüntü çıkarma talebi hazırlayın
var fileInfo = new FileInfo { FilePath = remoteEmailPath, StorageName = "internal" };
var options = new ImagesOptions { FileInfo = fileInfo, OutputPath = outputFolder };
var imagesRequest = new ImagesRequest(options);
// 4. Inline/ekli görüntüleri çıkarmak için Görüntü API'sini çağırın
var imagesResponse = parserApi.Images(imagesRequest);
if (imagesResponse.Images == null || imagesResponse.Images.Count == 0)
{
Console.WriteLine("No images found inside the email.");
return;
}
Console.WriteLine($"Found {imagesResponse.Images.Count} image(s) inside the email:");
foreach (var img in imagesResponse.Images)
{
Console.WriteLine($" - {img.Path} ({img.Size} bytes) [{img.MediaType}]");
}
// 5. Cloud depolamadan yerel klasöre çıkarılan görüntüleri indirin (macOS güvenli)
Directory.CreateDirectory(localOutputDir);
foreach (var img in imagesResponse.Images)
{
// Dönüş yolunu ve çıktı klasörünü normalleştirerek tekrarları önleyin.
var returnedPath = (img.Path ?? string.Empty).Replace("\\", "/").Trim('/');
var normalizedOutputFolder = (outputFolder ?? string.Empty).Replace("\\", "/").Trim('/');
string cloudImagePath;
if (!string.IsNullOrEmpty(normalizedOutputFolder) &&
(returnedPath.StartsWith(normalizedOutputFolder + "/") || returnedPath == normalizedOutputFolder))
{
cloudImagePath = returnedPath;
}
else if (!string.IsNullOrEmpty(normalizedOutputFolder))
{
cloudImagePath = $"{normalizedOutputFolder}/{returnedPath}".Trim('/');
}
else
{
cloudImagePath = returnedPath;
}
Console.WriteLine($"Downloading from cloud path: {cloudImagePath}");
var downloadRequest = new DownloadFileRequest(path: cloudImagePath);
var responseStream = fileApi.DownloadFile(downloadRequest);
var localFileName = Path.GetFileName(returnedPath);
var localFilePath = Path.Combine(localOutputDir, localFileName);
using (var fsLocal = File.Create(localFilePath))
{
responseStream.CopyTo(fsLocal);
}
Console.WriteLine($"Downloaded: {localFilePath}");
}
Console.WriteLine("Email image extraction completed.");
macOS ve bulut yolları hakkında notlar
- Cloud depolama anahtarlarını oluşturmak için
Path.Combinekullanmayın. S3/nesne depolama anahtarlarını oluştururken ileri eğik çizgi (/) ayırıcılarını kullanın. - Yerel dosya sistemi yolları için yalnızca
Path.Combinekullanın (macOS’ta indirilmiş dosyaları kaydetme). - Yukarıdaki kod, API tarafından döndürülen
img.Path‘i normalleştirir veextracted-email-images/extracted-email-images/....gibi tekrarlanan klasör segmentlerini önler.
E-posta Resimlerini cURL Kullanarak Çıkar
Alternatif olarak, CLI’yi tercih ediyorsanız, REST API’yi doğrudan arayabilirsiniz.
Adım 1 — Erişim Token’ı Oluşturma Bu yaklaşımın ilk adımı, istemci kimlik bilgilerine dayalı bir JWT erişim belirteci oluşturmaktır.
curl -v -X POST "https://api.groupdocs.cloud/connect/token" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded"
*Step 2 — Extract Images from ZIP
curl -v -X POST "https://api.groupdocs.cloud/v1.0/parser/images" \
-H "accept: application/json" \
-H "authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d "{ "FileInfo": { "FilePath": "inbox/message.eml", "StorageName": "internal" }, "OutputPath": "extracted-email-images"}"
Yanıt, bulut yollarıyla birlikte çıkarılan görüntü kayıtlarının bir dizisini döndürür; bunları Dosya API’sini veya imzalı URL’leri kullanarak indirin.
Online E-posta Görüntü Çıkarıcıyı Deneyin
REST API’nin yeteneklerini tek bir satır kod yazmadan test etmek için, ücretsiz çevrimiçi Email Image Extractor aracımızı kullanmayı düşünebilirsiniz. Bu araç, GroupDocs.Parser Cloud API üzerine geliştirilmiştir ve e-posta fotoğraflarını kaydetmenizi sağlar.

Hata ayıklama ve sorun giderme
Belirtilen anahtar mevcut değil” — API tarafından döndürülen kesinimg.Pathdeğerlerini kontrol edin. Döndürülen yollar zaten bunu içeriyorsaOutputPath` eklemeyin.- No images found — ensure the email actually contains supported image types and check for nested MIME parts.
- Büyük e-postalar - çok büyük veya birçok resim için, bulut depolama çıktı ve toplu indirmeleri tercih edin.
- Permissions — API kimlik bilgilerini ve
StorageName(örneğin,internal) doğrulayın.
Sonuç
Bu makale, e-posta dosyalarından (.eml ve .msg) nasıl resimler çıkarılacağı, e-postalardan programlı bir şekilde fotoğrafların nasıl kaydedileceği ve GroupDocs.Parser Cloud SDK for .NET kullanarak yerleşik ve ekli resimlerin nasıl indirileceğini gösterdi.
İlgili Makaleler
Aşağıdaki makaleleri ziyaret etmenizi şiddetle tavsiye ediyoruz:
- PowerPoint’tan Metin Çıkartma C# .NET’te
- HTML’yi C# .NET içinde PDF’ye dönüştürün.
- PDF’den C# .NET ile Görüntüleri Çıkarın
Sıkça Sorulan Sorular (SSS)
E-postalardan satır içi fotoğrafları çıkarabilir miyim? Evet, API otomatik olarak satır içi ve gömülü resimleri çıkarır.
Bu .msg (Outlook) dosyalarıyla çalışır mı? Evet — MSG ve EML formatları desteklenmektedir.
Sadece ekli fotoğrafları çıkarabilir miyim? Evet, filtreleme seçenekleri yalnızca ekleme dayalı çıkarım sağlar.
Hangi görsel formatları destekleniyor? JPG, PNG, BMP, GIF, TIFF ve diğer yaygın görsel türleri.
Ücretsiz deneme var mı? Evet. Ücretsiz bir hesap oluşturabilir ve aylık 150 API çağrısı alabilirsiniz.
