From ba34e914cc692220a91bbf3237249aaf211d0644 Mon Sep 17 00:00:00 2001 From: Aaron Fischer Date: Sat, 5 Dec 2015 14:29:04 +0100 Subject: [PATCH] Make it work for alle received heaer fields --- src/mailhead/parser.clj | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mailhead/parser.clj b/src/mailhead/parser.clj index 761f6b8..98dc814 100644 --- a/src/mailhead/parser.clj +++ b/src/mailhead/parser.clj @@ -19,7 +19,7 @@ (defn received-headers [all-headers] (map #(.getValue %) (filter (fn [header] (= "Received" (.getName header))) all-headers))) -(defn find-from-host [received-header] +(defn parse-received-headers [received-header] (let [datetime (str/trim (last (st/split received-header #";"))) ;; Hacky hacky, but no time to make this proper ... cleaned-date (st/trim (st/replace datetime #"(\(.*\)| )" " "))] @@ -27,12 +27,15 @@ :receiver (nth (re-find #"\s*by ([^ ]+)" received-header) 1) :time (timec/from-string cleaned-date)})) -(defn parse-received-header [header] - ((insta/parser (slurp "received-header.parser")) header)) +(defn extract-relevant-stuff [mime-message] + (->> mime-message + all-headers + received-headers + (map parse-received-headers))) (defn parse-from-string [email-string] (let [email-stream (java.io.ByteArrayInputStream. (.getBytes email-string))] - (all-headers (MimeMessage. session email-stream)))) + (extract-relevant-stuff (MimeMessage. session email-stream)))) (defn parse-from-file [filename] - (all-headers (MimeMessage. session (input-stream filename)))) + (extract-relevant-stuff (MimeMessage. session (input-stream filename))))