diff options
| -rwxr-xr-x | bin/repl.bat | 2 | ||||
| -rwxr-xr-x | bin/repl.sh | 2 | ||||
| -rw-r--r-- | lib/mail-1.4.4.jar | bin | 0 -> 482977 bytes | |||
| -rw-r--r-- | src/email.clj | 68 |
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 Binary files differnew file mode 100644 index 0000000..c4fc4c8 --- /dev/null +++ b/lib/mail-1.4.4.jar 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))) + |
