Email for humans
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Postmaster - Email for humans

Postmaster is a simple, easy to use SMTP/IMAP library with an API inspired by NodeMailer.



Postmaster maintains a list of common and well-known services, so you don't have to worry about hosts and ports, and can just send email to addresses.


;; You can find services by name
(find-service-by-name "gmail")

;; ... Or by domain name
(find-service-by-domain "")

;; Failing that, you can define your own
(defparameter *service*
  (make-instance '<service>
                 :name "GMail"
                 :domains (list "" "")
                 :smtp-server (make-instance '<smtp-server>
                                             :host ""
                                             :ssl :tls)))

Class defaults (SSL, ports) are safe and sane.


Once you have a service, you log in:


(defparameter *account*
  (make-instance '<account>
                 :service *service*
                 :username ""
                 :password "A really long, safe dictionary password. Right?"))

Sending Email

(defparameter *email*
  (make-instance '<email>
                 :from ""
                 :to ""
                 :subject "Why you should rewrite all your startup's code in CL"
                 :body "Paul Graham. Speed. Macros. CLOS. Done"))

(postmaster.smtp:send *account* *email*)


Postmaster Mock

This library provides a mock Email service that stores all messages it gets in an internal store. Accounts can be registered to the service and the stored emails inspected. This is useful for testing a Postmaster-based application.


Copyright (c) 2014 Fernando Borretti (

Licensed under the MIT License.