Question Les en-têtes d'un courrier électronique peuvent-ils vous dire s'il comporte une pièce jointe?


J'essaie de filtrer les courriels comportant des pièces jointes, mais dans le système que j'utilise, je n'ai accès qu'aux en-têtes (pour le filtrage). Existe-t-il un moyen cohérent de déterminer si un e-mail contient des pièces jointes utilisant uniquement des en-têtes? (Peut-être en vérifiant si le type de contenu est en plusieurs parties?)


7
2017-10-29 06:42


origine


La vérification de mime-type = 'multipart / mixed' fonctionne dans tous les courriels que j'ai vus avec Gmail. C’est le cas si vous définissez une pièce jointe à partir de laquelle Gmail affiche un trombone. - wezten


Réponses:


Vous ne pouvez pas atteindre votre objectif souhaité si vous avez accès seulement aux en-têtes. L'information peut être un en-tête non standard, mais ce n’est évidemment pas une chose sur laquelle vous pouvez compter. Soit avoir accès au corps ou abandonner l'idée.


7
2017-10-29 08:44





Les courriers sans pièces jointes peuvent aussi contenir content-type: multipart, comme avec les versions texte et html du contenu. Ce que vous devez vérifier est c-t: multipart et ensuite pour les parties qui ne sont pas content-type: text / *, mais pour cela vous aurez besoin d’un accès au corps :(


2
2017-10-29 06:54





Pour les pièces jointes Mime, les e-mails avec un Content-Type: multipart/mixed aurait souvent des pièces jointes (mais ne sont pas obligés). Emails avec un Content-Type: autre que multipart/* n'aurait pas de pièces jointes. Rien d'autre (multipart/alternative étant le plus commun) peut avoir des pièces jointes.

Et dans tous les cas, cela dépend de ce que l’on entend par attachement. Si par attachement, vous voulez dire seulement les parties de mime qui ont un attachment  Content-Disposition, vous ne le trouverez pas dans l'en-tête de l'e-mail, mais uniquement dans les en-têtes correspondants de mime.

Les éléments que vous ne souhaitez peut-être pas prendre en compte comme pièces jointes sont, par exemple, les signatures de courrier électronique, des parties d’un fichier. multipart/related message qui sont par exemple des images incorporées dans la signature d'un message html ...


1
2017-10-29 12:45





J'ai eu l'en-tête de l'e-mail en utilisant le code ci-dessous:

 msg_header = @imap.fetch(message_id, 'RFC822.HEADER').first.attr['RFC822.HEADER']
headers = msg_header.split(/\r\n|: /)
email_header = headers[headers.index('Content-Type')+1].split(/;/)

Ensuite, vous pouvez décider si cet e-mail a une pièce jointe ou non sans get body.

vous pouvez vérifier les informations d'en-tête de ici J'espère que cela vous aide.


0
2018-02-28 07:39