- Dlaczego wyodrębniać obrazy z wiadomości e-mail?
- API do Ekstrakcji Obrazów z E-maili
- Wyodrębnij obrazy z pliku ZIP za pomocą C# .NET
- Wyciągnij obrazy e-maili za pomocą cURL
- Wypróbuj internetowy ekstraktor obrazów z e-maili
Dlaczego wyodrębniać obrazy z e-maili?
E-maile (MSG, EML) często zawierają ważne wizualizacje, takie jak obrazy przesłane przez klientów, banery reklamowe, obrazy HTML osadzone oraz załączniki w postaci zdjęć. Automatyzacja ekstrakcji umożliwia Ci:
- Zapisz zdjęcia z e-maili bez ręcznego wysiłku
- Przetwarzaj e-maile hurtowo
- Pobierz obrazy osadzone w linii i z CID
- Zwiększ workflow dla CRM, zgłoszeń wsparcia, automatyzacji i archiwizacji
- Przygotuj dane wizualne do analizy i przetwarzania
Ten artykuł odpowiada na często zadawane pytania, takie jak jak zapisać zdjęcie z e-maila, jak zapisać zdjęcia z e-maila oraz jak pobrać obraz z e-maila za pomocą .NET REST API.
API do ekstrakcji obrazów z e-maili
Używając GroupDocs.Parser Cloud SDK for .NET, możesz analizować pliki EML i MSG oraz ekstraktować każdy typ obrazu, który zawierają, w tym:
- Inline embedded images (Base64 / CID)
- CID-referenced HTML images
- Załączone zdjęcia (JPG, PNG, GIF, BMP, TIFF)
Obsługiwane formaty:
- EML — standardowe pliki e-mail RFC822.
- MSG — wiadomości e-mail Microsoft Outlook.
Wymagania wstępne
- Konto GroupDocs Cloud (ID klienta i tajny klient).
- .NET 6.0+ zainstalowane.
- Visual Studio lub kompatybilne IDE.
- NuGet package:
GroupDocs.Parser-Cloud
Zainstaluj przez NuGet
dotnet add package GroupDocs.Parser-Cloud --version 25.7.0
Ekstrakcja obrazów z wiadomości e-mail za pomocą C# .NET
Poniżej znajduje się kompletny przykład C# pokazujący, jak przesłać plik email (EML lub MSG), wywołać API Obrazów w celu wyodrębnienia obrazów z wiadomości email i pobrać wynikowe zdjęcia lokalnie. Rozwiązuje to przypadki użycia, takie jak jak zapisać zdjęcie z maila i pobieranie zdjęcia z maila.
Krok 1 — Zainicjalizuj API:
var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);
Krok 2 — Ustaw informacje i opcje pliku ZIP:
var fileInfo = new FileInfo { FilePath = "source.eml" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);
tep 3 — Wyodrębnij obrazy:
var imagesRequest = new ImagesRequest(options);
var imagesResponse = parserApi.Images(imagesRequest);
// 1. Skonfiguruj klienta API
var config = new Configuration
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET"
};
var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);
// Ścieżki lokalne i chmurowe
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. Prześlij plik e-mail do chmury
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. Przygotuj prośbę o wyodrębnienie obrazów
var fileInfo = new FileInfo { FilePath = remoteEmailPath, StorageName = "internal" };
var options = new ImagesOptions { FileInfo = fileInfo, OutputPath = outputFolder };
var imagesRequest = new ImagesRequest(options);
// 4. Wywołaj API obrazów, aby wyodrębnić obrazy wbudowane/dołączone
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. Pobierz wyodrębnione obrazy z chmury do lokalnego folderu (bezpieczne dla macOS)
Directory.CreateDirectory(localOutputDir);
foreach (var img in imagesResponse.Images)
{
// Normalizować zwróconą ścieżkę i folder wyjściowy, aby uniknąć duplikacji
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.");
Notatki dotyczące macOS i ścieżek w chmurze
- Nie używaj
Path.Combinedo budowania kluczy przechowywania w chmurze. Używaj separatorów ukośnika (/) podczas tworzenia kluczy S3/przechowywania obiektów. - Użyj
Path.Combinetylko dla lokalnych ścieżek systemu plików (zapisywanie pobranych plików na macOS). - Kod powyżej normalizuje
img.Pathzwrócony przez API i unika zduplikowanych segmentów folderów, takich jakextracted-email-images/extracted-email-images/....
Extract Email Images using cURL
Alternatywnie, jeśli wolisz CLI, możesz bezpośrednio wywołać REST API.
Krok 1 — Wygeneruj token dostępu Pierwszym krokiem w tym podejściu jest wygenerowanie tokena dostępu JWT na podstawie danych uwierzytelniających klienta.
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"}"
Odpowiedź zwraca tablicę wyodrębnionych rekordów obrazów z ich ścieżkami w chmurze; pobierz je za pomocą interfejsu API plików lub podpisanych URL-i.
Spróbuj narzędzia Online Email Image Extractor
Aby przetestować możliwości REST API bez pisania ani jednej linii kodu, możesz rozważyć skorzystanie z naszego bezpłatnego narzędzia Email Image Extractor. Zostało opracowane na podstawie GroupDocs.Parser Cloud API i umożliwia zapisywanie zdjęć z e-maili.

Rozwiązywanie problemów i debugowanie
Określony klucz nie istnieje” — sprawdź dokładne wartościimg.Pathzwrócone przez API. Nie dodawajOutputPath`, jeśli zwrócone ścieżki już go zawierają.- Nie znaleziono obrazów — upewnij się, że e-mail rzeczywiście zawiera obsługiwane typy obrazów i sprawdź zagnieżdżone części MIME.
- Duże maile — w przypadku bardzo dużych lub wielu obrazów, preferuj przechowywanie w chmurze i pobieranie zbiorcze.
- Uprawnienia — zweryfikuj dane uwierzytelniające API oraz
StorageName(np.internal), czy są poprawne.
Wniosek
Ten artykuł pokazał, jak wydobywać obrazy z plików e-mailowych (.eml i .msg), jak programowo zapisywać zdjęcia z e-maila oraz jak pobierać obrazy inline i załączone za pomocą GroupDocs.Parser Cloud SDK dla .NET.
Powiązane artykuły
Zalecamy zapoznanie się z następującymi artykułami, aby dowiedzieć się więcej o:
- Ekstrakcja tekstu z PowerPointa w C# .NET
- Convert HTML to PDF w C# .NET
- Ekstrahowanie obrazów z PDF w C# .NET
Najczęściej zadawane pytania (FAQs)
Czy mogę wyodrębnić zdjęcia w treści wiadomości e-mail? Tak, API automatycznie wyodrębnia obrazy wewnętrzne i osadzone.
Czy to działa z plikami .msg (Outlook)? Tak — formaty MSG i EML są obsługiwane.
Czy mogę wyodrębnić tylko załączone zdjęcia? Tak, opcje filtracji pozwalają na wyodrębnienie tylko załączników.
Jakie formaty obrazów są obsługiwane? JPG, PNG, BMP, GIF, TIFF oraz inne powszechne typy obrazów.
Czy jest darmowy okres próbny? Tak. Możesz założyć darmowe konto i uzyskać 150 miesięcznych wywołań API.
