summaryrefslogtreecommitdiff
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
parentc3f21596346e9276d625e9ec62a56496092ea18f (diff)
Commit email
-rwxr-xr-xbin/repl.bat2
-rwxr-xr-xbin/repl.sh2
-rw-r--r--lib/mail-1.4.4.jarbin0 -> 482977 bytes
-rw-r--r--src/email.clj68
4 files changed, 70 insertions, 2 deletions
diff --git a/bin/repl.bat b/bin/repl.bat
index 79a0aaf..5ab0646 100755
--- a/bin/repl.bat
+++ b/bin/repl.bat
@@ -1,3 +1,3 @@
REM Windows REPL script
SHIFT
-java -Xmx256m -server -cp lib/commons-io-1.4.jar;lib/commons-fileupload-1.2.1.jar;lib/commons-codec-1.3.jar;lib/clojure.jar;lib/clojure-contrib.jar;lib/compojure-3.2v1.jar;lib/jetty-6.1.14.jar;lib/jetty-util-6.1.14.jar;lib/servlet-api-2.5-6.1.14.jar;lib/jline-0.9.94.jar;lib/postgresql-8.4-701.jdbc4.jar;lib/stringtemplate-3.2.1.jar;lib/antlr-2.7.7.jar;src/ jline.ConsoleRunner clojure.main -i %0 -r %*
+java -Xmx256m -server -cp lib/commons-io-1.4.jar;lib/commons-fileupload-1.2.1.jar;lib/commons-codec-1.3.jar;lib/clojure.jar;lib/clojure-contrib.jar;lib/compojure-3.2v1.jar;lib/jetty-6.1.14.jar;lib/jetty-util-6.1.14.jar;lib/servlet-api-2.5-6.1.14.jar;lib/jline-0.9.94.jar;lib/postgresql-8.4-701.jdbc4.jar;lib/stringtemplate-3.2.1.jar;lib/antlr-2.7.7.jar;lib/mail-1.4.4.jar;src/ jline.ConsoleRunner clojure.main -i %0 -r %*
diff --git a/bin/repl.sh b/bin/repl.sh
index d4beeda..5fc36b8 100755
--- a/bin/repl.sh
+++ b/bin/repl.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-java -Xmx256m -server -cp .:lib/commons-io-1.4.jar:lib/commons-fileupload-1.2.1.jar:lib/commons-codec-1.3.jar:lib/jline-0.9.94.jar:lib/clojure.jar:lib/clojure-contrib.jar:lib/compojure-3.2v1.jar:lib/jetty-6.1.14.jar:lib/jetty-util-6.1.14.jar:lib/servlet-api-2.5-6.1.14.jar:lib/postgresql-8.4-701.jdbc4.jar:lib/stringtemplate-3.2.1.jar:lib/antlr-2.7.7.jar:src/ jline.ConsoleRunner clojure.main -i $1 -r $@
+java -Xmx256m -server -cp .:lib/commons-io-1.4.jar:lib/commons-fileupload-1.2.1.jar:lib/commons-codec-1.3.jar:lib/jline-0.9.94.jar:lib/clojure.jar:lib/clojure-contrib.jar:lib/compojure-3.2v1.jar:lib/jetty-6.1.14.jar:lib/jetty-util-6.1.14.jar:lib/servlet-api-2.5-6.1.14.jar:lib/postgresql-8.4-701.jdbc4.jar:lib/stringtemplate-3.2.1.jar:lib/antlr-2.7.7.jar:lib/mail-1.4.4.jar:src/ jline.ConsoleRunner clojure.main -i $1 -r $@
diff --git a/lib/mail-1.4.4.jar b/lib/mail-1.4.4.jar
new file mode 100644
index 0000000..c4fc4c8
--- /dev/null
+++ b/lib/mail-1.4.4.jar
Binary files differ
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)))
+