เอ็มเอชทีเอ็มแอล

เอ็มเอชทีเอ็มแอล (อังกฤษ: MHTML: MIME HTML ไมม์เอชทีเอ็มแอล) เป็นมาตรฐานอันหนึ่งซึ่งใช้พื้นฐานมาจาก RFC 2557 ใช้สำหรับการฝังทรัพยากร เช่นแฟ้มภาพและเสียง ลงไปในเว็บเพจ แล้วใช้การเชื่อมโยงจากภายในด้วยวิธีการเดียวกันกับโค้ดใน HTML ทำให้สามารถเปิดอ่านเนื้อหาในเว็บเพจได้โดยไม่ต้องใช้การเชื่อมโยงภายนอก (ไปยังแฟ้มอื่น) แฟ้มข้อมูลที่ถูกฝังนั้นจะเข้ารหัสและเก็บเป็นแบบไมม์ (MIME) แฟ้มข้อมูลชนิดนี้ที่สร้างโดยไมโครซอฟท์ เวิร์ด อินเทอร์เน็ตเอกซ์พลอเรอร์ หรือโอเปร่า จะมีชนิดแฟ้มเป็น .mht หรือ .mhtml
สิ่งสำคัญของเอ็มเอชทีเอ็มแอลคือเนื้อหาทั้งหมดจะถูกเข้ารหัสให้อยู่ในรูปแบบข้อความของ HTML e-mail โดยใช้ชนิดไมม์ multipart/related ซึ่งเป็นการแบ่งเนื้อหาออกเป็นส่วนๆ ส่วนแรกจะเป็นแฟ้ม HTML ธรรมดา (มักใช้ quoted-printable เพื่อเข้ารหัส) ส่วนต่อๆ ไปจะเป็นข้อมูลของแฟ้มที่ต้องการนำมาฝังบนเพจ (มักเข้ารหัสเป็น base64) และมีการระบุ URL ต้นฉบับเพื่อใช้เชื่อมโยงกับตำแหน่งแฟ้มในเนื้อหา

เว็บเบราว์เซอร์ที่รองรับ

กระบวนการเก็บบันทึกเว็บเพจโดยฝังทรัพยากรลงไปด้วยให้เป็นรูปแบบเอ็มเอชทีเอ็มแอลไม่ได้ถูกตั้งเป็นมาตรฐานให้เว็บเบราว์เซอร์ทั้งหมดมารองรับ ด้วยเหตุผลนี้แฟ้มเอ็มเอชทีเอ็มแอลเดียวกันก็ยังอาจแสดงผลต่างกันบนเว็บเบราว์เซอร์คนละตัว เหมือนกับเว็บเพจทั่วไปที่แสดงผลผิดแปลกออกไปในเว็บเบราว์เซอร์ต่างชนิดกัน

อินเทอร์เน็ตเอกซ์พลอเรอร์

รูปแบบ .mht ถูกนำเสนอขึ้นใน พ.ศ. 2542 ในอินเทอร์เน็ตเอกซ์พลอเรอร์ รุ่นที่ 5 ซึ่งช่วยให้ผู้ใช้งานสามารถเก็บบันทึกเว็บเพจและทรัพยากรที่เกี่ยวข้องให้อยู่ในแฟ้มเดียว ดังการเก็บแฟ้มถาวร อย่างไรก็ตาม ลักษณะสำคัญนี้ไม่อาจเก็บบันทึกเว็บเพจที่มีความซับซ้อนมากๆ ได้อย่างสมบูรณ์ โดยเฉพาะเพจที่มีการเรียกใช้สคริปต์ ส่วนรูปภาพอื่นๆ สามารถเก็บบันทึกลงไปได้ทั้งหมด
การเก็บบันทึกสามารถทำได้โดยไปยังหน้าเว็บเพจที่ต้องการ เลือกเมนู "File" และ "Save As" จากนั้นเลือกประเภทของแฟ้มให้เป็น "Web Archive (.mht)" แล้วตั้งชื่อแฟ้มเพื่อทำการบันทึก

โอเปร่า

การเก็บบันทึกเว็บเพจพร้อมทรัพยากรให้เป็นแฟ้ม MHTML เริ่มมีการใช้งานได้ในโอเปร่า รุ่นที่ 9 ตั้งแต่รอบการพัฒนารายสัปดาห์ที่ 8265 (ออกเมื่อวันที่ 10 มีนาคม พ.ศ. 2549) การเก็บเว็บเพจที่มีสคริปต์ยังเป็นปัญหาเช่นเดียวกับที่มีในอินเทอร์เน็ตเอกซ์พลอเรอร์

ไฟร์ฟอกซ์

มอซิลลา ไฟร์ฟอกซ์ ตั้งแต่รุ่นที่ 2 ไม่ได้รองรับการบันทึกหรือการแสดงผลแฟ้ม MHTML ได้โดยตรง (ระบุไว้ใน ข้อผิดพลาดหมายเลข 18764) แต่ฟังก์ชันนี้สามารถใช้งานได้บนวินโดวส์ที่ติดตั้งส่วนขยาย Mozilla Archive Format แม้ว่าแฟ้ม .mht ที่ส่วนขยายนี้สร้างขึ้นมายังไม่รองรับกับผลิตภัณฑ์อื่นของไมโครซอฟท์ได้อย่างเต็มที่ก็ตาม

ซาฟารี

ซาฟารีของแอปเปิลตั้งแต่รุ่นที่ 2 (ออกเมื่อ 29 เมษายน พ.ศ. 2548) รองรับการบันทึกเว็บเพจให้เป็นแบบ MHTML แต่ไม่สามารถเปิดอ่านเพื่อแสดงผลแฟ้มดังกล่าวได้ ดังนั้นการรองรับแฟ้ม MHTML จึงยังคงเป็นข้อด้อยของเบราว์เซอร์นี้

โปรแกรมแก้ไขที่รองรับ

โปรแกรมแก้ไขของไมโครซอฟท์ อาทิ ไมโครซอฟท์ ฟรอนต์เพจ และไมโครซอฟท์ เวิร์ด ไม่สามารถอ่านแฟ้ม MHTML ที่สร้างจากอินเทอร์เน็ตเอกซ์พลอเรอร์ได้อย่างถูกต้องสมบูรณ์ตามการจัดรูปแบบ เนื่องจากโปรแกรมสำหรับแปลงที่พบได้บนเว็บไซต์ของไมโครซอฟท์ใช้ได้กับเวิร์ดรุ่น 2000 เท่านั้น นอกเหนือจากนั้นไมโครซอฟท์ ออฟฟิศจะเก็บบันทึกแฟ้มที่ถูกเชื่อมโยง (เช่นรูปภาพ) โดยใช้ที่อยู่สัมพันธ์ (relative link) ในขณะที่อินเทอร์เน็ตเอกซ์พลอเรอร์เก็บบันทึกที่อยู่สัมบูรณ์ (absolute link)
ใน พ.ศ. 2549 ไมโครซอฟท์ แชร์พอยต์ดีไซเนอร์ รุ่น 2007 เริ่มสามารถอ่านและแก้ไขแฟ้ม MHTML ได้อย่างถูกต้องตรงตามรูปแบบที่กำหนด

ตัวอย่างโค้ด

ต่อไปนี้คือเว็บเพจแบบเอ็มเอชทีเอ็มแอลที่แสดงคำว่า Hello, world! ต่อท้ายด้วยรูปไอคอนเล็กๆ หนึ่งรูป

From: <Saved by Microsoft Internet Explorer 5>
Subject: Testing
Date: Sat, 21 Jul 2007 12:33:33 +0700
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=_NextPart_000_0005_01C7CB93.5A3D8240"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
 
This is a multi-part message in MIME format.
 
------=_NextPart_000_0005_01C7CB93.5A3D8240
Content-Type: text/html;
charset="windows-874"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://127.0.0.1/test.html
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" = 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML = 
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Testing</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; = 
charset=3Dwindows-874">
<META content=3D"MSHTML 6.00.2900.3020" name=3DGENERATOR></HEAD>
<BODY>Hello, world! <IMG height=3D16 alt=3D"" = 
src=3D"http://127.0.0.1/folder_red.gif"=20
width = 3D16> </BODY></HTML>
 
------=_NextPart_000_0005_01C7CB93.5A3D8240
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://127.0.0.1/folder_red.gif
 
R0lGODlhEAAQAIQAAf////6nm/3+/G1ubPyVkMMsT9XV0/t9icwzV/tsg/yDirMcP93e3LwjSJwD
J6MMMPtkgoKCg8rKzMMsSqwTMo2OjKwTOJwDIrMcOuxTcrwjQvtkiuNMbtM8Xk1OTNxDZiH5BAEA
AAAALAAAAAAQABAABAWAICCOZGmeJqJODCoiQiwUEgoHeCA0Dbb8LQCCQCzKYpRKC6E4FJ7QAu+3
YEycx+xB8KgUEoicGLcJPAYFSLjIJmQCFzSkEFDY73ZOwDFoQDQBB4KDgh97fRANAQmMjYwdhwxU
FBYWD5cXDpoeEQASEQOhoqMDETUADAaqq6wGLSEAOw== 
 
------=_NextPart_000_0005_01C7CB93.5A3D8240--