- ทำไมต้องดึงภาพจากอีเมล?
- อีเมล รูปภาพ การดึงข้อมูล API
- ดึงภาพจาก ZIP โดยใช้ C# .NET
- ใช้ cURL เพื่อดึงภาพจากอีเมล
- ลองใช้เครื่องมือดึงรูปภาพจากอีเมลออนไลน์
ทำไมต้องดึงภาพจากอีเมล?
อีเมล (MSG, EML) มักมีภาพที่สำคัญเช่น รูปภาพที่ส่งโดยลูกค้า, แบนเนอร์การตลาด, รูปภาพ HTML ที่แสดงในเนื้อหา, และไฟล์แนบรูปภาพ การทำให้การดึงข้อมูลเป็นอัตโนมัติช่วยให้คุณ:
- บันทึกรูปภาพจากอีเมลโดยไม่ต้องใช้ความพยายามด้วยตนเอง
- ประมวลผลอีเมลแบบจำนวนมาก
- ดาวน์โหลดภาพแบบ inline และ CID ที่ฝังอยู่
- ปรับปรุงกระบวนการทำงานสำหรับ CRM, บัตรสนับสนุน, การทำอัตโนมัติ, และการเก็บถาวร
- เตรียมข้อมูลเชิงภาพสำหรับการวิเคราะห์และการประมวลผล
บทความนี้ตอบคำถามทั่วไปเช่นวิธีการบันทึกรูปภาพจากอีเมล, วิธีการบันทึกรูปภาพในอีเมล, และวิธีการดาวน์โหลดภาพจากอีเมลโดยใช้ .NET REST API.
Email Image Extraction API
ใช้ GroupDocs.Parser Cloud SDK for .NET คุณสามารถแยกไฟล์ EML และ MSG และดึงประเภทของภาพทุกประเภทที่พวกมันมี รวมถึง:
รูปแบบที่รองรับ:
- EML — ไฟล์อีเมลมาตรฐาน RFC822.
- MSG — ข้อความอีเมล Microsoft Outlook.
ข้อกำหนดเบื้องต้น
- บัญชี GroupDocs Cloud (Client ID & Client Secret)
- .NET 6.0+ ได้ติดตั้งแล้ว
- Visual Studio หรือ IDE ที่เข้ากันได้
- NuGet package:
GroupDocs.Parser-Cloud
ติดตั้งผ่าน NuGet
dotnet add package GroupDocs.Parser-Cloud --version 25.7.0
ดึงรูปภาพจากอีเมลโดยใช้ C# .NET
ด้านล่างนี้คือตัวอย่าง C# เต็มรูปแบบที่แสดงวิธีการอัปโหลดไฟล์อีเมล (EML หรือ MSG) เรียกใช้ Images API เพื่อดึงภาพจากอีเมล และดาวน์โหลดภาพที่ได้มายังเครื่องในท้องถิ่น ซึ่งแก้ไขกรณีการใช้งานเช่นวิธีการบันทึกภาพจากอีเมลและดาวน์โหลดภาพจากอีเมล
ขั้นตอนที่ 1 — เริ่มต้น API:
var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);
ขั้นตอนที่ 2 — ตั้งค่า ข้อมูลไฟล์ ZIP & ตัวเลือก:
var fileInfo = new FileInfo { FilePath = "source.eml" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);
ขั้นตอนที่ 3 — ดึงภาพ:
var imagesRequest = new ImagesRequest(options);
var imagesResponse = parserApi.Images(imagesRequest);
// 1. ตั้งค่าลูกค้า API
var config = new Configuration
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET"
};
var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);
// เส้นทางท้องถิ่นและคลาวด์
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. อัปโหลดไฟล์อีเมลไปยังพื้นที่เก็บข้อมูลคลาวด์
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. เตรียมคำขอการดึงภาพ
var fileInfo = new FileInfo { FilePath = remoteEmailPath, StorageName = "internal" };
var options = new ImagesOptions { FileInfo = fileInfo, OutputPath = outputFolder };
var imagesRequest = new ImagesRequest(options);
// 4. เรียกใช้ API ของรูปภาพเพื่อนำภาพที่แนบหรือแนบอยู่มาใช้งาน
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. ดาวน์โหลดภาพที่แยกออกจากกันจากคลาวด์สโตเรจลงในโฟลเดอร์ในเครื่อง (macOS-safe)
Directory.CreateDirectory(localOutputDir);
foreach (var img in imagesResponse.Images)
{
// ทำให้เส้นทางที่ส่งกลับและโฟลเดอร์ส่งออกปกติ เพื่อหลีกเลี่ยงการทำซ้ำ
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 และเส้นทางคลาวด์
- ห้ามใช้
Path.Combineในการสร้างคีย์ของการจัดเก็บข้อมูลบนคลาวด์ ใช้เครื่องหมายทับไปข้างหน้า (/) เป็นตัวแบ่งเมื่อสร้างคีย์ S3/การจัดเก็บวัตถุ - ใช้
Path.Combineเฉพาะสำหรับเส้นทางในระบบไฟล์ท้องถิ่น (การบันทึกไฟล์ที่ดาวน์โหลดใน macOS) - โค้ดข้างต้นทำการปรับค่าของ
img.Pathที่ส่งกลับโดย API และหลีกเลี่ยงการซ้ำซ้อนของส่วนโฟลเดอร์ เช่นextracted-email-images/extracted-email-images/....
Extract Email Images using cURL
ทางเลือก หากคุณชอบ CLI คุณสามารถเรียกใช้ REST API โดยตรงได้
ขั้นตอนที่ 1 — สร้างโทเค็นการเข้าถึง ขั้นตอนแรกในวิธีนี้คือการสร้างโทเค็นการเข้าถึง JWT โดยอิงจากข้อมูลประจำตัวของลูกค้า。
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"}"
การตอบกลับจะส่งคืนอาร์เรย์ของบันทึกภาพที่ดึงออกมาพร้อมกับเส้นทางในคลาวด์ของพวกเขา; ดาวน์โหลดพวกมันโดยใช้ File API หรือ URL ที่มีลายเซ็น
ลองใช้งานเครื่องมือดึงภาพจากอีเมลออนไลน์
ในการทดสอบความสามารถของ REST API โดยไม่ต้องเขียนโค้ดเลยสักบรรทัด คุณอาจพิจารณาใช้เครื่องมือออนไลน์ฟรี Email Image Extractor ของเรา ซึ่งพัฒนาขึ้นบน GroupDocs.Parser Cloud API และช่วยให้คุณบันทึกรูปภาพในอีเมลได้

การแก้ไขปัญหา & การดีบัก
ระบุคีย์ไม่มีอยู่” — ตรวจสอบค่าที่แน่นอนของimg.Pathที่ส่งคืนโดย API ห้ามนำOutputPath` ไปวางข้างหน้า หากเส้นทางที่ส่งคืนมีมันอยู่แล้ว- ไม่พบรูปภาพ — โปรดตรวจสอบว่าอีเมลมีประเภทภาพที่รองรับจริง ๆ และตรวจสอบ MIME parts ที่ซ้อนกัน
- อีเมลขนาดใหญ่ — สำหรับภาพขนาดใหญ่หรือหลายภาพ แนะนำให้ใช้การจัดเก็บข้อมูลบนคลาวด์และดาวน์โหลดแบบชุด
- Permissions — verify API credentials and
StorageName(e.g.,internal) are correct.
ข้อสรุป
บทความนี้แสดงวิธีการดึงภาพจากไฟล์อีเมล (.eml และ .msg) วิธีการบันทึกรูปภาพจากอีเมลในรูปแบบโปรแกรม และวิธีการดาวน์โหลดรูปภาพที่ฝังและแนบโดยใช้ GroupDocs.Parser Cloud SDK สำหรับ .NET
บทความที่เกี่ยวข้อง
เราแนะนำให้เยี่ยมชมบทความต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ:
คำถามที่พบบ่อย (FAQs)
ฉันสามารถดึงภาพในอีเมลออกมาได้ไหม? ใช่, API จะดึงข้อมูลภาพที่ซ้อนและภาพที่ฝังไว้โดยอัตโนมัติ.
ใช้งานได้กับไฟล์ .msg (Outlook) หรือไม่? ใช่ — รูปแบบ MSG และ EML ได้รับการสนับสนุน
ฉันสามารถดึงเฉพาะภาพที่แนบไว้ได้หรือไม่? ใช่ ตัวเลือกการกรองช่วยให้สามารถดึงเฉพาะไฟล์แนบได้
รูปแบบภาพใดบ้างที่รองรับ? JPG, PNG, BMP, GIF, TIFF และประเภทภาพทั่วไปอื่นๆ
มีการทดลองใช้ฟรีหรือไม่? ใช่. คุณสามารถสร้างบัญชีฟรีและรับ 150 การเรียก API ต่อเดือน
