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?)

iainbeeston
quelle
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.

John Gardeniers
quelle
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 :(

Zhenech
quelle
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 ...

sch
quelle
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.

harsch4u
quelle