- Mengapa Mengambil Gambar dari Email?
- Email Image Extraction API
- Ekstrak Gambar dari ZIP menggunakan C# .NET
- Extract Email Images using cURL
- Coba Pengambil Gambar Email Daring
Mengapa mengekstrak gambar dari email?
Email (MSG, EML) sering kali mengandung visual penting seperti gambar yang dikirimkan oleh pelanggan, spanduk pemasaran, gambar HTML dalam, dan lampiran foto. Mengotomatiskan ekstraksi memungkinkan Anda untuk:
- Simpan foto dari email tanpa usaha manual.
- Proses email dalam jumlah besar
- Unduh gambar inline dan gambar yang disematkan CID
- Tingkatkan alur kerja untuk CRM, tiket dukungan, otomatisasi, dan pengarsipan
- Siapkan data visual untuk analisis dan pemrosesan
Artikel ini menjawab pertanyaan umum seperti bagaimana cara menyimpan foto dari email, bagaimana cara menyimpan foto email, dan bagaimana cara mengunduh gambar dari email menggunakan .NET REST API.
Email Image Extraction API
Menggunakan GroupDocs.Parser Cloud SDK untuk .NET, Anda dapat mengurai file EML dan MSG serta mengekstrak setiap jenis gambar yang mereka miliki, termasuk:
- Gambar yang disematkan secara inline (Base64 / CID)
- Gambar HTML yang direferensikan oleh CID
- Foto terlampir (JPG, PNG, GIF, BMP, TIFF)
Format yang didukung:
- EML — File email standar RFC822.
- MSG — pesan email Microsoft Outlook.
Prasyarat
- Akun GroupDocs Cloud (Client ID & Client Secret).
- .NET 6.0+ terinstal.
- Visual Studio atau IDE yang kompatibel.
- Paket NuGet:
GroupDocs.Parser-Cloud
Install melalui NuGet
dotnet add package GroupDocs.Parser-Cloud --version 25.7.0
Ekstrak Gambar dari Email menggunakan C# .NET
Berikut adalah contoh C# lengkap yang menunjukkan cara mengunggah file email (EML atau MSG), memanggil API Gambar untuk mengekstrak gambar dari email, dan mengunduh foto yang dihasilkan secara lokal. Ini menyelesaikan kasus penggunaan seperti cara menyimpan gambar dari email dan mengunduh foto email.
Langkah 1 — Inisialisasi API:
var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);
Langkah 2 — Atur Informasi & Opsi File ZIP:
var fileInfo = new FileInfo { FilePath = "source.eml" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);
tep 3 — Ekstrak Gambar:
var imagesRequest = new ImagesRequest(options);
var imagesResponse = parserApi.Images(imagesRequest);
// 1. Konfigurasi klien API
var config = new Configuration
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET"
};
var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);
// Jalur lokal dan cloud
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. Unggah file email ke penyimpanan awan
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. Siapkan permintaan ekstraksi gambar
var fileInfo = new FileInfo { FilePath = remoteEmailPath, StorageName = "internal" };
var options = new ImagesOptions { FileInfo = fileInfo, OutputPath = outputFolder };
var imagesRequest = new ImagesRequest(options);
// 4. Panggil API Gambar untuk mengekstrak gambar inline/terlampir
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. Unduh gambar yang diekstrak dari penyimpanan awan ke folder lokal (aman untuk macOS)
Directory.CreateDirectory(localOutputDir);
foreach (var img in imagesResponse.Images)
{
// Normalisasi jalur yang dikembalikan dan folder output untuk menghindari duplikasi
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.");
Catatan tentang macOS dan jalur cloud
- Jangan gunakan
Path.Combineuntuk membangun kunci penyimpanan cloud. Gunakan pemisah garis miring maju (/) saat menyusun kunci S3/penyimpanan objek. - Gunakan
Path.Combinehanya untuk jalur sistem file lokal (menyimpan file yang diunduh di macOS). - Kode di atas menormalkan
img.Pathyang dikembalikan oleh API dan menghindari segmen folder yang duplikat sepertiextracted-email-images/extracted-email-images/....
Ekstrak Gambar Email menggunakan cURL
Sebagai alternatif, jika Anda lebih suka CLI, Anda dapat memanggil API REST secara langsung.
Langkah 1 — Menghasilkan Token Akses Langkah pertama dalam pendekatan ini adalah menghasilkan token akses JWT berdasarkan kredensial klien.
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"}"
Respon mengembalikan array catatan gambar yang diekstrak dengan jalur cloud mereka; unduh menggunakan File API atau URL yang ditandatangani.
Coba Pengambil Gambar Email Online
Untuk menguji kemampuan REST API tanpa menulis satu baris kode pun, Anda dapat mempertimbangkan untuk menggunakan alat online gratis kami Email Image Extractor. Ini dikembangkan di atas GroupDocs.Parser Cloud API dan memungkinkan Anda untuk menyimpan foto email.

Pemecahan masalah & debugging
Specified key does not exist” — periksa nilaiimg.Pathyang tepat yang dikembalikan oleh API. Jangan menambahkanOutputPath` jika jalur yang dikembalikan sudah menyertakannya.- Tidak ada gambar yang ditemukan — pastikan email benar-benar berisi tipe gambar yang didukung dan periksa bagian MIME yang bersarang.
- Email besar — untuk gambar yang sangat besar atau banyak, lebih baik menggunakan output penyimpanan cloud dan unduhan batch.
- Permissions — verifikasi kredensial API dan
StorageName(misalnya,internal) adalah benar.
Kesimpulan
Artikel ini menunjukkan cara mengekstrak gambar dari file email (.eml dan .msg), cara menyimpan foto dari email secara programatik, dan cara mengunduh gambar inline dan terlampir menggunakan GroupDocs.Parser Cloud SDK untuk .NET.
Artikel Terkait
Kami sangat merekomendasikan untuk mengunjungi artikel-artikel berikut untuk mempelajari lebih lanjut tentang:
- Ekstrak Teks dari PowerPoint di C# .NET
- Convert HTML to PDF in C# .NET
- Ekstrak Gambar dari PDF di C# .NET
Pertanyaan yang Sering Diajukan (FAQs)
Bisakah saya mengekstrak foto inline dari email? Ya, API secara otomatis mengekstrak gambar inline dan tertanam.
Apakah ini berfungsi dengan file .msg (Outlook)? Ya — format MSG dan EML didukung.
Dapatkah saya mengekstrak hanya foto yang terlampir? Ya, opsi penyaringan memungkinkan ekstraksi hanya lampiran.
Format gambar apa yang didukung? JPG, PNG, BMP, GIF, TIFF, dan jenis gambar umum lainnya.
Apakah ada uji coba gratis? Ya. Anda dapat membuat akun gratis dan mendapatkan 150 panggilan API bulanan.
