riemann中的自定义电子邮件主题和正文

时间:2015-07-25 09:16:00

标签: clojure riemann

我在riemann使用电子邮件提醒。我已经对:subject和`:body'的值进行了解码。我在这方面遇到了一些问题。我粘贴了我的riemann代码和我在下面得到的错误。我不知道如何解决这个问题。

(let [email (mailer {:host "smtp.gmail.com"
                            :port 25
                            :user "user"
                            :pass "password"
                            :auth "true"
                            :subject "Welcome All to Coding"
                            :body "Hello Team, \n Welcome to my coding \n Thank You!"
                            :from "mygmail@gmail.com"})])

我收到以下错误

WARN [2015-07-25 02:10:17,640] defaultEventExecutorGroup-2-2 - riemann.config -
riemann.email$mailer$make_stream__7892$stream__7893@62aa5 threw
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IF
n
        at riemann.email$email_event.invoke(email.clj:15)
        at riemann.email$mailer$make_stream__7892$stream__7893.invoke(email.clj:
69)
        at riemann.config$eval96$stream__101$fn__106.invoke(riemann_v1.con
fig:39)
        at riemann.config$eval96$stream__101.invoke(riemann_v1.config:39)
        at riemann.streams$smap$stream__3695$fn__3706.invoke(streams.clj:163)
        at riemann.streams$smap$stream__3695.invoke(streams.clj:163)
        at riemann.streams$fixed_time_window_fn$stream__3946$fn__3979.invoke(str
eams.clj:381)
        at riemann.streams$fixed_time_window_fn$stream__3946.invoke(streams.clj:
381)
        at riemann.config$eval96$stream__145$fn__150.invoke(riemann_v1.con
fig:27)
        at riemann.config$eval96$stream__145.invoke(riemann_v1.config:27)
        at riemann.core$stream_BANG_$fn__5678.invoke(core.clj:19)
        at riemann.core$stream_BANG_.invoke(core.clj:18)
        at riemann.transport$handle.invoke(transport.clj:159)
        at riemann.transport.tcp$tcp_handler.invoke(tcp.clj:93)
        at riemann.transport.tcp$gen_tcp_handler$fn__5904.invoke(tcp.clj:65)
        at riemann.transport.tcp.proxy$io.netty.channel.ChannelInboundHandlerAda
pter$ff19274a.channelRead(Unknown Source)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(Abst
ractChannelHandlerContext.java:333)
        at io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractCha
nnelHandlerContext.java:32)
        at io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelH
andlerContext.java:324)
        at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecuto
r.java:36)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThread
EventExecutor.java:116)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorato
r.run(DefaultThreadFactory.java:137)
        at java.lang.Thread.run(Thread.java:745)

当我评论:subject:body时。我没有收到错误。

提前致谢

1 个答案:

答案 0 :(得分:2)

您必须提供主题和正文的功能,而不仅仅是字符串。来自the docs

  

默认情况下,riemann使用(subject events)(body events)来格式化电子邮件。   您可以通过包含来设置自己的主题或主体格式化程序功能   msg-opts中的:subject:body。这些格式化函数需要一系列   事件并返回一个字符串。

(def email (mailer {} {:body (fn [events] 
                               (apply prn-str events))}))

所以只需要一个可以使用的常量字符串:

(fn [events] "Your Subject Text")