summaryrefslogtreecommitdiff
path: root/src/email.clj
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-02 13:26:28 -0400
committersostler <sbostler@gmail.com>2010-04-02 13:26:28 -0400
commit8831ee16e219999289975b046da7a68df251e175 (patch)
tree1da6971b79d30a68008c80804a390f6b7a55bc21 /src/email.clj
parentc3f21596346e9276d625e9ec62a56496092ea18f (diff)
Commit email
Diffstat (limited to 'src/email.clj')
-rw-r--r--src/email.clj68
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)))
+