Pure functions for SMTP email preparation and validation. No I/O, no side effects.
Pure functions for SMTP email preparation and validation. No I/O, no side effects.
(build-mime-properties {:keys [host port tls? ssl? username password]})Build java.util.Properties for a javax.mail Session. Pure function — returns a Properties object with no I/O.
Args: config - map with :host :port :tls? :ssl? (all optional except host/port)
Returns: java.util.Properties instance
Build java.util.Properties for a javax.mail Session. Pure function — returns a Properties object with no I/O. Args: config - map with :host :port :tls? :ssl? (all optional except host/port) Returns: java.util.Properties instance
(normalize-recipients to)Normalise :to field to a vector of strings.
Args: to - string or vector of strings
Returns: Vector of non-blank strings
Normalise :to field to a vector of strings. Args: to - string or vector of strings Returns: Vector of non-blank strings
(outbound-email-summary email)Return a concise summary map for logging/monitoring.
Args: email - prepared OutboundEmail map
Returns: {:to-count :from :subject :has-html? :has-reply-to?}
Return a concise summary map for logging/monitoring.
Args:
email - prepared OutboundEmail map
Returns:
{:to-count :from :subject :has-html? :has-reply-to?}(prepare-outbound-email input now)Normalise and stamp an outbound email map.
Args: input - OutboundEmail map now - java.util.Date or java.time.Instant for :prepared-at timestamp
Returns: Normalised map with :to as vector and :prepared-at added
Normalise and stamp an outbound email map. Args: input - OutboundEmail map now - java.util.Date or java.time.Instant for :prepared-at timestamp Returns: Normalised map with :to as vector and :prepared-at added
(validate-config config)Validate SMTP config against schema.
Returns: {:valid? true} or {:valid? false :errors [...malli explain...]}
Validate SMTP config against schema.
Returns:
{:valid? true} or {:valid? false :errors [...malli explain...]}cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |