{"id":23317969,"url":"https://github.com/datalust/seq-app-htmlemail","last_synced_at":"2026-03-02T11:02:03.472Z","repository":{"id":13615749,"uuid":"16308894","full_name":"datalust/seq-app-htmlemail","owner":"datalust","description":"Plug-in apps that act on event streams in the Seq log server","archived":false,"fork":false,"pushed_at":"2024-06-14T21:34:51.000Z","size":5510,"stargazers_count":53,"open_issues_count":7,"forks_count":38,"subscribers_count":10,"default_branch":"dev","last_synced_at":"2026-01-14T05:43:00.112Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datalust.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-01-28T10:36:33.000Z","updated_at":"2025-03-01T10:09:16.000Z","dependencies_parsed_at":"2022-07-12T15:11:50.253Z","dependency_job_id":"e20cca55-098e-453d-b6fb-9e7a834f82d1","html_url":"https://github.com/datalust/seq-app-htmlemail","commit_stats":{"total_commits":154,"total_committers":13,"mean_commits":"11.846153846153847","dds":"0.23376623376623373","last_synced_commit":"8a366e4d2476283c1eadfb5061e363cea08752d7"},"previous_names":["datalust/seq-apps","continuousit/seq-apps"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/datalust/seq-app-htmlemail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalust%2Fseq-app-htmlemail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalust%2Fseq-app-htmlemail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalust%2Fseq-app-htmlemail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalust%2Fseq-app-htmlemail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datalust","download_url":"https://codeload.github.com/datalust/seq-app-htmlemail/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalust%2Fseq-app-htmlemail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29999222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T09:59:02.300Z","status":"ssl_error","status_checked_at":"2026-03-02T09:59:02.001Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-20T17:14:40.201Z","updated_at":"2026-03-02T11:02:03.447Z","avatar_url":"https://github.com/datalust.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Seq.App.EmailPlus [![Build status](https://ci.appveyor.com/api/projects/status/k03t9s0ubtylqixi?svg=true)](https://ci.appveyor.com/project/datalust/seq-app-htmlemail) [![NuGet tag](https://img.shields.io/badge/nuget-seq--app-blue.svg)](https://www.nuget.org/packages?q=seq-app)\n\n[Send log events and alerts as HTML email messages](https://docs.datalust.co/docs/formatting-html-email) when they arrive at [Seq](https://datalust.co/seq).\n\n\u003e [!IMPORTANT]\n\u003e This app has been superseded by [`Seq.App.Mail.Smtp`](https://github.com/datalust/seq-app-mail), which supports both plain text and HTML email templating with an improved syntax and modern SMTP defaults.\n\n![HTML email app icon](https://raw.githubusercontent.com/datalust/seq-app-htmlemail/dev/asset/seq-app-email-plus.png)\n\n## HTML email templates\n\nThe app uses [Handlebars.Net](https://github.com/rexm/Handlebars.Net) for email templating. Check out the [Handlebars Guide](https://handlebarsjs.com/guide/) for information on the Handlebars syntax.\n\n### Event types and properties\n\nAll templates can access the following special properties:\n\n * `$DateTimeFormat` \u0026mdash; the date/time format string defined in the app's settings\n * `$EventType` \u0026mdash; the numeric event type assigned to the event\n * `$EventUri` \u0026mdash; a link to the event in the Seq UI (not valid for alerts)\n * `$Exception` \u0026mdash; the exception associated with the event, if any\n * `$Id` \u0026mdash; the Seq event id\n * `$Instance` \u0026mdash; the Seq server's instance name, if any\n * `$Level` \u0026mdash; the event's level as a string\n * `$LocalTimestamp` \u0026mdash; the timestamp of the event, in the server's time zone (deprecated)\n * `$Message` \u0026mdash; the event's fully-rendered message\n * `$MessageTemplate` \u0026mdash; the event's [message template](https://messagetemplates.org)\n * `$Properties` \u0026mdash; a dictionary containing all first-class event properties (see below)\n * `$ServerUri` \u0026mdash; the Seq server's base URL\n * `$TimeZoneName` \u0026mdash; the time zone name defined in the app's settings\n * `$UtcTimestamp` \u0026mdash; the timestamp of the event\n\nThe event's first-class properties do not use prefixed `$` names, so if an event carries a `RequestId` property, this is accessed in the template as `{{RequestId}}`, **not** `{{$RequestId}}`.\n\nNotifications for Alerts can use the properties [listed in the Seq documentation](https://docs.datalust.co/docs/alert-properties).\n\n### Built-in helper functions\n\nThe app makes the following helper functions available in templates.\n\n| Name | Description | Example usage |\n| --- | --- | --- |\n| `datetime` | Format a date time, optionally specifying a time zone | `{{datetime $SliceStart 'o' 'Australia/Brisbane'}}` |\n| `if_eq` | Compare two values for equality and optionally execute a specified block | `{{#if_eq $Level 'Error'}} Oops! {{/if_eq}}` |\n| `pretty` | Pretty-print a value, converting arrays and objects to JSON | `{{pretty Results}}` |\n| `substring` | Compute a substring given start index and optional length | `{{substring Uri 0 5}}` |\n\nHelpers are [defined here](https://github.com/datalust/seq-app-htmlemail/blob/dev/src/Seq.App.EmailPlus/HandlebarsHelpers.cs).\n\n## Other Seq apps\n\nThis repository originally included the following apps from Datalust, each now in their own dedicated repositories:\n\n * **[File Archive](https://github.com/datalust/seq-app-filearchive)** - write incoming events into a set of rolling text files\n * **[First of Type](https://github.com/datalust/seq-app-firstoftype)** - raise an event the first time a new event type is seen\n * **[Replication](https://github.com/datalust/seq-app-replication)** - [forward incoming events](https://docs.datalust.co/docs/event-forwarding) to another Seq server\n * **[Thresholds](https://github.com/datalust/seq-app-thresholds)** - raise an event if the frequency of matched events exceeds a threshold\n * **[Digest Email](https://github.com/datalust/seq-app-digestemail)** - send multiple events as a single HTML email\n * **[Health Check Input](https://github.com/datalust/seq-input-healthcheck)** - periodically GET an HTTP resource and write response metrics to Seq\n * **[GELF Input](https://github.com/datalust/sqelf)** - ingest events GELF format over TCP or UDP\n * **[JSON Archive](https://github.com/datalust/seq-app-jsonarchive)** - write incoming events into a set of rolling files, in JSON format \n * **[RabbitMQ Input](https://github.com/datalust/seq-input-rabbitmq)** - ingest events from RabbitMQ\n * **[Syslog Input](https://github.com/datalust/squiflog)** - ingest syslog events over UDP\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalust%2Fseq-app-htmlemail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatalust%2Fseq-app-htmlemail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalust%2Fseq-app-htmlemail/lists"}