telemere/taoensso.telemere.postal.html
2024-12-24 11:23:39 +01:00

49 lines
No EOL
6.2 KiB
HTML

<!DOCTYPE html PUBLIC ""
"">
<html><head><meta charset="UTF-8" /><title>taoensso.telemere.postal documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Telemere</span> <span class="project-version">1.0.0-RC2</span></span></a></h1><div id="langs"><div class="lang current">clj</div><div class="lang"><a href="index.cljs.html">cljs</a></div></div></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>taoensso</span></div></div></li><li class="depth-2"><a href="taoensso.telemere.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>telemere</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.open-telemetry.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>open-telemetry</span></div></a></li><li class="depth-3 branch current"><a href="taoensso.telemere.postal.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>postal</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.slack.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>slack</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.sockets.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>sockets</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.streams.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>streams</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.timbre.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>timbre</span></div></a></li><li class="depth-3 branch"><a href="taoensso.telemere.tools-logging.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>tools-logging</span></div></a></li><li class="depth-3"><a href="taoensso.telemere.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="taoensso.telemere.postal.html#var-default-dispatch-opts"><div class="inner"><span>default-dispatch-opts</span></div></a></li><li class="depth-1"><a href="taoensso.telemere.postal.html#var-handler.3Apostal"><div class="inner"><span>handler:postal</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">taoensso.telemere.postal</h1><div class="doc"><pre class="plaintext">Email handler using `postal`,
Ref. &lt;<a href="https://github.com/drewr/postal">https://github.com/drewr/postal</a>&gt;.</pre></div><div class="public anchor" id="var-default-dispatch-opts"><h3>default-dispatch-opts</h3><h4 class="lang current">clj</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div></div><div class="public anchor" id="var-handler.3Apostal"><h3>handler:postal</h3><h4 class="lang current">clj</h4><div class="usage"><code>(handler:postal {:keys [conn-opts msg-opts subject-fn subject-max-len body-fn], :or {body-fn (utils/format-signal-fn), subject-fn (utils/signal-preamble-fn {:format-inst-fn nil}), subject-max-len 128}})</code></div><div class="doc"><pre class="plaintext">Experimental, subject to change.
Needs `postal`, Ref. &lt;<a href="https://github.com/drewr/postal">https://github.com/drewr/postal</a>&gt;.
Returns a signal handler that:
- Takes a Telemere signal (map).
- Sends the signal as an email to specified recipient.
Useful for emailing important alerts to admins, etc.
Default handler dispatch options (override when calling `add-handler!`):
`:min-level` - `:info`
`:rate-limit` -
[[5 (enc/msecs :mins 1)] ; Max 5 emails in 1 min
[10 (enc/msecs :mins 15)] ; Max 10 emails in 15 mins
[15 (enc/msecs :hours 1)] ; Max 15 emails in 1 hour
[30 (enc/msecs :hours 6)] ; Max 30 emails in 6 hours
]
Options:
`:conn-opts` - Map of connection opts given to `postal/send-message`
Examples:
{:host "mail.isp.net", :user "jsmith", :pass "a-secret"},
{:host "smtp.gmail.com", :user "jsmith@gmail.com", :pass "a-secret" :port 587 :tls true},
{:host "email-smtp.us-east-1.amazonaws.com", :port 587, :tls true,
:user "AKIAIDTP........", :pass "AikCFhx1P......."}
`:msg-opts` - Map of message opts given to `postal/send-message`
Examples:
{:from "foo@example.com", :to "bar@example.com"},
{:from "Alice &lt;foo@example.com", :to "Bob &lt;bar@example.com&gt;"},
{:from "no-reply@example.com", :to ["first-responders@example.com",
"devops@example.com"],
:cc "engineering@example.com"
:X-MyHeader "A custom header"}
`:subject-fn` - (fn [signal]) =&gt; email subject string
`:subject-max-len` - Truncate subjects beyond this length (default 90)
`:body-fn` - (fn [signal]) =&gt; email body content string,
see `format-signal-fn` or `pr-signal-fn`
Tips:
- Ref. &lt;<a href="https://github.com/drewr/postal">https://github.com/drewr/postal</a>&gt; for more info on `postal` options.
- Sending emails can be slow, and can incur financial costs!
Use appropriate handler dispatch options for async handling and rate limiting, etc.</pre></div></div></div></body></html>