aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config.lisp5
-rw-r--r--src/email.lisp11
-rw-r--r--src/main.lisp3
3 files changed, 17 insertions, 2 deletions
diff --git a/src/config.lisp b/src/config.lisp
index 0bc6fee..b1093b6 100644
--- a/src/config.lisp
+++ b/src/config.lisp
@@ -14,6 +14,11 @@
:reader endpoint
:documentation "Jira site URL (e.g. example.atlassian.net)")
+ (sendmail
+ :initarg :sendmail
+ :reader sendmail
+ :documentation "Email sending client command")
+
(email-to
:initarg :email-to
:reader email-to
diff --git a/src/email.lisp b/src/email.lisp
index 9e5929c..fe80af1 100644
--- a/src/email.lisp
+++ b/src/email.lisp
@@ -1,8 +1,17 @@
(in-package :wajir)
(defun deliver-email (config issue)
+ (let ((message (with-output-to-string (message-stream)
+ (build-email config issue message-stream))))
+
+ (with-open-stream (sendmail-input (make-string-input-stream message))
+ (uiop:run-program (sendmail config)
+ :output "/tmp/wajir.output"
+ :input sendmail-input))))
+
+(defun build-email (config issue output-stream)
(cl-smtp:write-rfc8822-message
- *standard-output*
+ output-stream
(format nil "wajir@~A" (uiop:hostname))
`(,(email-to config))
(format-subject issue)
diff --git a/src/main.lisp b/src/main.lisp
index 7c0f368..d700182 100644
--- a/src/main.lisp
+++ b/src/main.lisp
@@ -84,4 +84,5 @@
;; 2. Send email
(format t "Watching issue ~A~%" (gethash "key" issue))
- (deliver-email config issue))
+ (if (sendmail config)
+ (deliver-email config issue)))