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