Initial version.
commit
a5b2ca3504
@ -0,0 +1,9 @@
|
||||
(defpackage :cl-sendgrid-system (:use :asdf :cl))
|
||||
|
||||
(in-package :cl-sendgrid-system)
|
||||
|
||||
(defsystem :cl-sendgrid
|
||||
:version "0.1"
|
||||
:depends-on (drakma yason flexi-streams)
|
||||
:components ((:file "packages")
|
||||
(:file "cl-sendgrid" :depends-on ("packages"))))
|
@ -0,0 +1,20 @@
|
||||
(in-package :cl-sendgrid)
|
||||
|
||||
(define-condition sendgrid-error (error)
|
||||
((message :initarg :message :reader message)))
|
||||
|
||||
(defun send-email (&key api-user api-key subject to text html from)
|
||||
(let ((r (parse (flexi-streams:octets-to-string
|
||||
(http-request "https://sendgrid.com/api/mail.send.json"
|
||||
:method :post
|
||||
:parameters `(("api_user" . ,api-user)
|
||||
("api_key" . ,api-key)
|
||||
("subject" . ,subject)
|
||||
("to" . ,to)
|
||||
("text" . ,text)
|
||||
("html" . ,html)
|
||||
("from" . ,from))))
|
||||
:object-as :alist)))
|
||||
(if (string-equal (cdr (assoc "message" r :test #'string-equal)) "success")
|
||||
t
|
||||
(error 'sendgrid-error :message (cdr (assoc "errors" r :test #'string-equal))))))
|
@ -0,0 +1,5 @@
|
||||
(in-package :cl-user)
|
||||
|
||||
(defpackage #:cl-sendgrid
|
||||
(:use :cl :drakma :yason)
|
||||
(:export #:send-email #:sendgrid-error))
|
Loading…
Reference in New Issue