我正在开发一个解析电子邮件收件箱的脚本。如何判断消息部分是附件还是嵌入式图像?这个示例邮件是从一个用户发送的,该用户告诉我他的客户嵌入了图像,但是disposition =“Attachment”看起来像一个附加的图像,我看到AppleMail使用“内联”似乎更合理......
我还检查了msg文本以查看它是否引用了附加文件,但在此示例中也没有对文件的引用 - 但用户坚持说它们是嵌入的,而不是附加的。
消息的结构:
object(stdClass)#218 (12) {
["type"]=>
int(1)
["encoding"]=>
int(0)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(5) "MIXED"
["ifdescription"]=>
int(0)
["ifid"]=>
int(0)
["bytes"]=>
int(262312)
["ifdisposition"]=>
int(0)
["ifdparameters"]=>
int(0)
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#219 (2) {
["attribute"]=>
string(8) "BOUNDARY"
["value"]=>
string(37) "----_=_NextPart_001_01CE168A.AE40BD2E"
}
}
["parts"]=>
array(5) {
[0]=>
object(stdClass)#220 (12) {
["type"]=>
int(1)
["encoding"]=>
int(0)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(11) "ALTERNATIVE"
["ifdescription"]=>
int(0)
["ifid"]=>
int(0)
["bytes"]=>
int(4237)
["ifdisposition"]=>
int(0)
["ifdparameters"]=>
int(0)
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#221 (2) {
["attribute"]=>
string(8) "BOUNDARY"
["value"]=>
string(37) "----_=_NextPart_002_01CE168A.AE40BD2E"
}
}
["parts"]=>
array(2) {
[0]=>
object(stdClass)#222 (12) {
["type"]=>
int(0)
["encoding"]=>
int(4)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(5) "PLAIN"
["ifdescription"]=>
int(0)
["ifid"]=>
int(0)
["lines"]=>
int(21)
["bytes"]=>
int(204)
["ifdisposition"]=>
int(0)
["ifdparameters"]=>
int(0)
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#223 (2) {
["attribute"]=>
string(7) "CHARSET"
["value"]=>
string(10) "iso-8859-1"
}
}
}
[1]=>
object(stdClass)#224 (12) {
["type"]=>
int(0)
["encoding"]=>
int(4)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(4) "HTML"
["ifdescription"]=>
int(0)
["ifid"]=>
int(0)
["lines"]=>
int(97)
["bytes"]=>
int(3709)
["ifdisposition"]=>
int(0)
["ifdparameters"]=>
int(0)
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#225 (2) {
["attribute"]=>
string(7) "CHARSET"
["value"]=>
string(10) "iso-8859-1"
}
}
}
}
}
[1]=>
object(stdClass)#226 (14) {
["type"]=>
int(5)
["encoding"]=>
int(3)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(3) "BMP"
["ifdescription"]=>
int(1)
["description"]=>
string(7) "bmp.bmp"
["ifid"]=>
int(0)
["bytes"]=>
int(191348)
["ifdisposition"]=>
int(1)
["disposition"]=>
string(10) "ATTACHMENT"
["ifdparameters"]=>
int(1)
["dparameters"]=>
array(1) {
[0]=>
object(stdClass)#227 (2) {
["attribute"]=>
string(8) "FILENAME"
["value"]=>
string(7) "bmp.bmp"
}
}
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#228 (2) {
["attribute"]=>
string(4) "NAME"
["value"]=>
string(7) "bmp.bmp"
}
}
}
[2]=>
object(stdClass)#229 (14) {
["type"]=>
int(5)
["encoding"]=>
int(3)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(3) "GIF"
["ifdescription"]=>
int(1)
["description"]=>
string(7) "gif.gif"
["ifid"]=>
int(0)
["bytes"]=>
int(12178)
["ifdisposition"]=>
int(1)
["disposition"]=>
string(10) "ATTACHMENT"
["ifdparameters"]=>
int(1)
["dparameters"]=>
array(1) {
[0]=>
object(stdClass)#230 (2) {
["attribute"]=>
string(8) "FILENAME"
["value"]=>
string(7) "gif.gif"
}
}
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#231 (2) {
["attribute"]=>
string(4) "NAME"
["value"]=>
string(7) "gif.gif"
}
}
}
[3]=>
object(stdClass)#232 (14) {
["type"]=>
int(5)
["encoding"]=>
int(3)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(4) "JPEG"
["ifdescription"]=>
int(1)
["description"]=>
string(7) "jpg.jpg"
["ifid"]=>
int(0)
["bytes"]=>
int(25642)
["ifdisposition"]=>
int(1)
["disposition"]=>
string(10) "ATTACHMENT"
["ifdparameters"]=>
int(1)
["dparameters"]=>
array(1) {
[0]=>
object(stdClass)#233 (2) {
["attribute"]=>
string(8) "FILENAME"
["value"]=>
string(7) "jpg.jpg"
}
}
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#234 (2) {
["attribute"]=>
string(4) "NAME"
["value"]=>
string(7) "jpg.jpg"
}
}
}
[4]=>
object(stdClass)#235 (14) {
["type"]=>
int(3)
["encoding"]=>
int(3)
["ifsubtype"]=>
int(1)
["subtype"]=>
string(12) "OCTET-STREAM"
["ifdescription"]=>
int(1)
["description"]=>
string(7) "pdf.pdf"
["ifid"]=>
int(0)
["bytes"]=>
int(27834)
["ifdisposition"]=>
int(1)
["disposition"]=>
string(10) "ATTACHMENT"
["ifdparameters"]=>
int(1)
["dparameters"]=>
array(1) {
[0]=>
object(stdClass)#236 (2) {
["attribute"]=>
string(8) "FILENAME"
["value"]=>
string(7) "pdf.pdf"
}
}
["ifparameters"]=>
int(1)
["parameters"]=>
array(1) {
[0]=>
object(stdClass)#237 (2) {
["attribute"]=>
string(4) "NAME"
["value"]=>
string(7) "pdf.pdf"
}
}
}
}
}
答案 0 :(得分:2)
检查图像是否由[ifid]内联的最佳方法。我检查过各种邮件申请。它们以不同方式处理内联附件。 Zoho邮件标志着
[disposition] =>内联
实时邮件标记
[disposition] =>附件
他们都设置了
[ifid] => 1 [id] => < 0.28876465441.6812139177583476518.150d8a30c19__inline__img__src>
如果[ifid] => 1
那么它是内联图像,[id]将是图像cid。下载内联附件并替换
SRC = “CID:0.28876465441.6812139177583476518.150d8a30c19__inline__img__src”
使用下载的路径
答案 1 :(得分:1)
嵌入式图像将是“multipart / related”类型的MIME主体部分的第二个及后续子元素。附加的图像将是“multipart / mixed”类型的MIME主体部分的子项。