Closed pmensik closed 7 years ago
This is my code which is suppose to handle deleted message from Gmail inbox.
(defn- message-removed-event [event] (let [message (->> event :messages (map msg/read-message) (map :subject))] (println message))) (def manager (let [s (mail/get-session "imaps") gstore (mail/store "imaps" s "imap.gmail.com" "mymail@gmail.com" "mypsswd") folder (mail/open-folder gstore "inbox" :readonly) im (events/new-idle-manager s)] (events/add-message-count-listener message-added-event message-removed-event folder im) im))
However it ends up crashing on :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage when I delete a message in my inbox.
:cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage
Full stack trace here
:cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$recipients invoke message.clj 24]}] :trace [[clojure_mail.message$recipients invoke message.clj 24] [clojure_mail.message$to invoke message.clj 30] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$subject invoke message.clj 46]}] :trace [[clojure_mail.message$subject invoke message.clj 46] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getContentType for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getContentType for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$content_type invoke message.clj 73] [clojure_mail.message$multipart_QMARK_ invoke message.clj 125] [clojure_mail.message$message_body invoke message.clj 154] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getContentType for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getContentType for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$content_type invoke message.clj 73] [clojure_mail.message$multipart_QMARK_ invoke message.clj 125] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getContentType for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getContentType for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$content_type invoke message.clj 73] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$sender invoke message.clj 51]}] :trace [[clojure_mail.message$sender invoke message.clj 51] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getMessageID for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getMessageID for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$id invoke message.clj 100] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1308] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getFrom for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getFrom for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$from invoke message.clj 44] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1308] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getReceivedDate for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getReceivedDate for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$date_received invoke message.clj 66] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause No matching field found: getSentDate for class [Ljavax.mail.Message; :via [{:type java.lang.IllegalArgumentException :message No matching field found: getSentDate for class [Ljavax.mail.Message; :at [clojure.lang.Reflector getInstanceField Reflector.java 271]}] :trace [[clojure.lang.Reflector getInstanceField Reflector.java 271] [clojure.lang.Reflector invokeNoArgInstanceMember Reflector.java 315] [clojure_mail.message$date_sent invoke message.clj 61] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$message_headers invoke message.clj 114]}] :trace [[clojure_mail.message$message_headers invoke message.clj 114] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1308] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$recipients invoke message.clj 24]}] :trace [[clojure_mail.message$recipients invoke message.clj 24] [clojure_mail.message$bcc invoke message.clj 40] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1308] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]} #error { :cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :via [{:type java.lang.ClassCastException :message [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage :at [clojure_mail.message$recipients invoke message.clj 24]}] :trace [[clojure_mail.message$recipients invoke message.clj 24] [clojure_mail.message$cc invoke message.clj 35] [clojure_mail.message$add_field invoke message.clj 162] [clojure.core$partial$fn__4527 invoke core.clj 2495] [clojure.lang.PersistentHashMap$NodeSeq kvreduce PersistentHashMap.java 1303] [clojure.lang.PersistentHashMap$BitmapIndexedNode kvreduce PersistentHashMap.java 796] [clojure.lang.PersistentHashMap kvreduce PersistentHashMap.java 236] [clojure.core$fn__6713 invoke core.clj 6536] [clojure.core.protocols$fn__6531$G__6526__6540 invoke protocols.clj 174] [clojure.core$reduce_kv invoke core.clj 6562] [clojure_mail.message$read_message doInvoke message.clj 190] [clojure.lang.RestFn invoke RestFn.java 410] [clojure_mail.aa$message_removed_event invoke aa.clj 28] [clojure.core$comp$fn__4495 invoke core.clj 2438] [clojure_mail.events$message_count_listener$reify__5592 messagesRemoved events.clj 22] [javax.mail.event.MessageCountEvent dispatch MessageCountEvent.java 155] [javax.mail.EventQueue run EventQueue.java 166] [java.lang.Thread run Thread.java 745]]})}
The environment I use is OpenJDK 8, Leiningen, Clojure 1.8 and latest version of clojure-mail.
clojure-mail
This issue was caused by interfering dependency (Postal) so I am closing it
This is my code which is suppose to handle deleted message from Gmail inbox.
However it ends up crashing on
:cause [Ljavax.mail.Message; cannot be cast to javax.mail.internet.MimeMessage
when I delete a message in my inbox.Full stack trace here
The environment I use is OpenJDK 8, Leiningen, Clojure 1.8 and latest version of
clojure-mail
.