about summary refs log tree commit diff
path: root/email
diff options
context:
space:
mode:
Diffstat (limited to 'email')
-rw-r--r--email/email.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/email/email.scm b/email/email.scm
index 22d9739..5e1ef9d 100644
--- a/email/email.scm
+++ b/email/email.scm
@@ -43,6 +43,14 @@
             email?
             email-headers
             email-body
+            email-from
+            email-to
+            email-cc
+            email-bcc
+            email-subject
+            email-date
+            email-message-id
+            email-content-type
             <mime-entity>
             make-mime-entity
             mime-entity?
@@ -71,6 +79,56 @@
   (headers mime-entity-headers)
   (body mime-entity-body))
 
+(define (sanitize-field email field)
+  "Sanitize @var{field} value in @var{email} and return a new sanitized
+value."
+  (let ((field-value (assq-ref (email-headers email)
+                               field)))
+    (if (string? field-value)
+        ;; Invalid fields show up as strings in the parse tree.
+        ;; Discard them and return an empty list.
+        (list)
+        field-value)))
+
+(define (email-from email)
+  "Return list of From addresses in @var{email}."
+  (or (sanitize-field email 'from)
+      (list)))
+
+(define (email-to email)
+  "Return list of To addresses in @var{email}."
+  (or (sanitize-field email 'to)
+      (list)))
+
+(define (email-cc email)
+  "Return list of Cc addresses in @var{email}."
+  (or (sanitize-field email 'cc)
+      (list)))
+
+(define (email-bcc email)
+  "Return list of Bcc addresses in @var{email}."
+  (or (sanitize-field email 'bcc)
+      (list)))
+
+(define (email-subject email)
+  "Return Subject of @var{email}."
+  (assq-ref (email-headers email)
+            'subject))
+
+(define (email-date email)
+  "Return Date of @var{email}."
+  (sanitize-field email 'date))
+
+(define (email-message-id email)
+  "Return Message-ID of @var{email}."
+  (assq-ref (email-headers email)
+            'message-id))
+
+(define (email-content-type email)
+  "Return Content-Type of @var{email}."
+  (assq-ref (email-headers email)
+            'content-type))
+
 (define string->lcase-symbol
   (compose string->symbol string-downcase))