Zdravím, mám príklad v Clojure, ktorý funguje, ale je potrebné ho nejako upraviť
do funkcií aby bol kosher. Language server ma upozorňuje, že inline definície nie sú
vhodné, tak som dal definície nad main funkciu.
Ale mám to problém nejako dať dokopy do funkcie connect. Potrebujem vrátiť
dáta, ukončiť inbox a store. Poznám x jazykov ale s LISPom má môj mozog zatiaľ
problém.
(ns pop3.core
(:import (jakarta.mail Session Folder)))
(def user "username")
(def password "passsword")
(def host "pop3.mailtrap.io")
(def port 9950)
;; (defn connect []
;; (let [props (System/getProperties)
;; session (Session/getDefaultInstance props)
;; store (.getStore session "pop3")
;; inbox (.getFolder store "Inbox")]
;; (.connect store host port user password)
;; (.open inbox Folder/READ_ONLY)
;; (def messages (.getMessages inbox))
;; (.close inbox true)
;; (.close store)
;; messages)
(def props (System/getProperties))
(def session (Session/getDefaultInstance props))
;; (.setDebug session true)
(def store (.getStore session "pop3"))
(.connect store host port user password)
(def inbox (.getFolder store "Inbox"))
(.open inbox Folder/READ_ONLY)
(def messages (.getMessages inbox))
(defn -main []
(println (count messages))
(doseq [m messages] (let [subject (.getSubject m) body (slurp (.getInputStream m))]
(println subject)
(println body)
(prn "---------------------------")))
(.close inbox true)
(.close store))
Toto sú závislosti:
:dependencies [[org.clojure/clojure "1.10.3"]
[com.sun.activation/jakarta.activation "2.0.1"]
[com.sun.mail/jakarta.mail "2.0.1"]]
:main pop3.core/-main