Können die Header einer E-Mail Ihnen sagen, ob sie einen Anhang enthält?


7

Ich versuche, E-Mails mit Anhängen zu filtern, aber in dem von mir verwendeten System habe ich nur Zugriff auf die Header (zum Filtern). Gibt es eine konsistente Methode, um festzustellen, ob eine E-Mail Anhänge enthält, indem nur Kopfzeilen verwendet werden? (Vielleicht prüfen, ob der Inhaltstyp mehrteilig ist?)


Das Überprüfen auf mime-type = 'multipart / Mixed' funktioniert in allen E-Mails, die ich mit Google Mail gesehen habe. Dies ist der Fall, wenn Sie einen Anhang anhand dessen definieren, wofür Google Mail eine Büroklammer anzeigt.
Wezten

Antworten:


7

Sie können Ihr gewünschtes Ziel nicht erreichen , wenn Sie Zugang haben nur den Header. Die Informationen sind möglicherweise als nicht standardmäßiger Header vorhanden, aber darauf können Sie sich offensichtlich nicht verlassen. Entweder Zugang zum Körper bekommen oder die Idee aufgeben.


2

E-Mails ohne Anhänge können vom Inhaltstyp sein: auch mehrteilig, wie solche mit Text- und HTML-Versionen des Inhalts. Was Sie überprüfen müssten, ist ct: multipart und dann für Teile, die nicht vom Inhaltstyp sind: text / *, aber dafür benötigen Sie Zugriff auf den Body :(


1

Bei Mime-Anhängen enthalten E-Mails mit einem Content-Type: multipart/mixedhäufig Anhänge (müssen dies aber nicht). E-Mails mit einem Content-Type:anderen als multipart/*ohne Anhänge. Alles andere ( multipart/alternativeam häufigsten) kann Anhänge haben.

Und das hängt auf jeden Fall davon ab, was unter Anhaftung zu verstehen ist. Wenn Sie unter Anhang nur die MIME-Teile verstehen, die ein haben attachment Content-Disposition, werden Sie dies nicht im E-Mail-Header, sondern nur in den entsprechenden MIME-Headern des Teils herausfinden.

Dinge, die Sie möglicherweise nicht als Anhänge berücksichtigen möchten, sind beispielsweise E-Mail-Signaturen, Teile einer multipart/relatedNachricht, die beispielsweise Bilder sind, die in die Signatur einer HTML-Nachricht eingebettet sind ...


0

Ich habe einen E-Mail-Header mit dem folgenden Code erhalten:

 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(/;/)

Dann können Sie entscheiden, welchen Header diese Mail anhängen soll oder nicht, ohne get body.

Sie können die Header-Informationen von hier aus überprüfen. Ich hoffe, dies hilft Ihnen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.