diff options
| author | sostler <sbostler@gmail.com> | 2010-04-02 13:26:28 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-04-02 13:26:28 -0400 |
| commit | 8831ee16e219999289975b046da7a68df251e175 (patch) | |
| tree | 1da6971b79d30a68008c80804a390f6b7a55bc21 /src/email.clj | |
| parent | c3f21596346e9276d625e9ec62a56496092ea18f (diff) | |
Commit email
Diffstat (limited to 'src/email.clj')
| -rw-r--r-- | src/email.clj | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/email.clj b/src/email.clj new file mode 100644 index 0000000..2a68e7b --- /dev/null +++ b/src/email.clj @@ -0,0 +1,68 @@ +(ns email + (:import org.antlr.stringtemplate.StringTemplateGroup) + (:require [clojure.contrib.str-utils2 :as str-utils2])) + +(defn base-mail [& m] + (let [mail (apply hash-map m) + props (java.util.Properties.)] + + (doto props + (.put "mail.smtp.host" (:host mail)) + (.put "mail.smtp.port" (:port mail)) + (.put "mail.smtp.user" (:user mail)) + (.put "mail.smtp.socketFactory.port" (:port mail)) + (.put "mail.smtp.auth" "true")) + + (if (= (:ssl mail) true) + (doto props + (.put "mail.smtp.starttls.enable" "true") + (.put "mail.smtp.socketFactory.class" + "javax.net.ssl.SSLSocketFactory") + (.put "mail.smtp.socketFactory.fallback" "false"))) + + (let [authenticator (proxy [javax.mail.Authenticator] [] + (getPasswordAuthentication + [] + (javax.mail.PasswordAuthentication. + (:user mail) (:password mail)))) + session (javax.mail.Session/getDefaultInstance props authenticator) + msg (javax.mail.internet.MimeMessage. session)] + + (.setFrom msg (javax.mail.internet.InternetAddress. (:user mail))) + (doseq [to (:to mail)] + (.setRecipients msg + (javax.mail.Message$RecipientType/TO) + (javax.mail.internet.InternetAddress/parse to))) + (.setSubject msg (:subject mail)) + (.setText msg (:text mail)) + (javax.mail.Transport/send msg)))) + +(def mail-templates (new StringTemplateGroup "dumpfm-mail" "template/mail")) +(.setRefreshInterval mail-templates 3) + +(defn parse-mail-template [temp props] + (let [st (.getInstanceOf mail-templates temp)] + (doseq [[k v] props] + (.setAttribute st k v)) + (let [[s b] (.split (.toString st) "\\n" 2)] + [(.trim (.replaceFirst s "SUBJECT: " "")) + (.trim b)]))) + +(defn dump-mail [to subject text] + (base-mail :user "info@dump.fm" + :password "dumprulez7" + :host "smtpout.secureserver.net" + :port 25 + :ssl false + :to to + :subject subject + :text text)) + +(defn send-registration-email [nick email] + (let [[s b] (parse-mail-template "welcome" {"nick" nick})] + (dump-mail [email] s b))) + +(defn send-reset-email [nick email key] + (let [[s b] (parse-mail-template "reset" {"nick" nick "key" key})] + (dump-mail [email] s b))) + |
