Clojure email library
Clojure
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
lib_safe
src/mmemail
test/mmemail
.clojure
.gitignore
Mmemail.iml
README.rdoc
Rakefile
_MANIFEST.MF
mmemail.jpg
project.clj

README.rdoc

MM-Email

Simple Clojure library for sending email, with just one jar!

Installation

Leiningen:

(defproject your-project "0.0.0"
  :dependencies [[mmemail "1.0.1"]]

Jar File

…can be downloaded at clojars.org/repo/mmemail/mmemail/1.0.1/mmemail-1.0.1.jar

Usage:

Include the library

(use 'mmemail.core)

The Easy Way

mmemail.core is the only include you need. It contains only 2 methods, the fist being send-email. It takes a map that includes all the configuration and email parameters. That's it.

(send-email {:host "smtp.gmail.com"
             :port 465
             :ssl true
             :user "road@gmail.com"
             :password "runner"
             :to "joe@acme.com"
             :subject "Greetings"
             :body "Meep Meep!"})

Most of the parameters are required, but based on your server configuration you might get away without these:

  • :ssl

  • :password

  • :subject

It also accepts the following optional parameters:

  • :from (defaults to :user)

  • :cc

  • :bcc

The recipient parameters (:to, :cc, :bcc) may be a string, for one recipient, or a sequence of strings, for multiple recipients.

The Convenient Way

It can be annoying to pass such a big map into the function, and typically you'll want to get all the server configuration out of the way. This is where the second function of mmemail.core (create-mailer) comes into play.

(def my_mailer (create-mailer {:host "smtp.gmail.com"
                               :port 465
                               :ssl true
                               :user "road@gmail.com"
                               :password "runner"}))

create-mailer will return a new function with all the configuration baked in. So in the future, you can send email like so:

(my_mailer {:to "joe@acme.com"
            :subject "Greetings"
            :body "Meep Meep!"})

The create-mailer accepts email parameters that will be used as defaults when the generated function is called.

(def my_mailer (create-mailer {:subject "Greetings"
                               :body "Meep Meep!"
                               :host "smtp.gmail.com"
                               :port 465
                               :ssl true
                               :user "road@gmail.com"
                               :password "runner"}))
(my_mailer {:to "joe@acme.com"})

License

Copyright 2010 Micah Martin. All Rights Reserved. MMEMail and all included source files are distributed under terms of the GNU LGPL.