All Projects → danschultzer → Premailex

danschultzer / Premailex

Licence: mit
Preflight for your HTML emails - inline styling and plain text.

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Premailex

Caniuse.email
HTML and CSS Compatibility tables for emails
Stars: ✭ 133 (+16.67%)
Mutual labels:  email, html-emails
Awesome Emails
✉️ An awesome list of resources to build better emails.
Stars: ✭ 1,379 (+1109.65%)
Mutual labels:  email, html-emails
Responsive Html Email Template
A free simple responsive HTML email template
Stars: ✭ 10,831 (+9400.88%)
Mutual labels:  email, html-emails
Html Email Templates
Free HTML Email Templates created using the Postcards - https://designmodo.com/postcards/
Stars: ✭ 178 (+56.14%)
Mutual labels:  email, html-emails
React Email Editor
Drag-n-Drop Email Editor Component for React.js
Stars: ✭ 3,131 (+2646.49%)
Mutual labels:  email, html-emails
Papercups
Open-source live customer chat
Stars: ✭ 4,554 (+3894.74%)
Mutual labels:  phoenix, email
Phoenix swoosh
Swoosh <3 Phoenix
Stars: ✭ 145 (+27.19%)
Mutual labels:  phoenix, email
Paperboy
💌💨 Email Campaign Delivery built with GoLang inspired by GoHugo
Stars: ✭ 411 (+260.53%)
Mutual labels:  email, html-emails
I2p.i2p Bote
I2P-Bote is a serverless, encrypted e-mail application.
Stars: ✭ 103 (-9.65%)
Mutual labels:  email
Elixir Companies
A list of companies currently using Elixir in production.
Stars: ✭ 1,475 (+1193.86%)
Mutual labels:  phoenix
Mosaico
Mosaico - Responsive Email Template Editor
Stars: ✭ 1,392 (+1121.05%)
Mutual labels:  email
Spring Boot 2.x Examples
Spring Boot 2.x code examples
Stars: ✭ 104 (-8.77%)
Mutual labels:  email
Yii2 Swiftmailer
Yii 2 swiftmailer extension.
Stars: ✭ 109 (-4.39%)
Mutual labels:  email
Ja resource
A behaviour to reduce boilerplate code in your JSON-API compliant Phoenix controllers without sacrificing flexibility.
Stars: ✭ 111 (-2.63%)
Mutual labels:  phoenix
Ravenx
Notification dispatch library for Elixir applications
Stars: ✭ 100 (-12.28%)
Mutual labels:  email
Premailer Rails
CSS styled emails without the hassle.
Stars: ✭ 1,382 (+1112.28%)
Mutual labels:  email
Yummy Phoenix Graphql
Cooking recipe sharing app built with Phoenix, React, GraphQL and Kubernetes
Stars: ✭ 112 (-1.75%)
Mutual labels:  phoenix
Bamboo smtp
An SMTP adapter for Bamboo.
Stars: ✭ 111 (-2.63%)
Mutual labels:  email
Cli
Get a programmable email address. Automate what happens when you receive emails. It's like Zapier for devs who hate emails.
Stars: ✭ 105 (-7.89%)
Mutual labels:  email
Parsemail
Simple email parsing for Golang
Stars: ✭ 107 (-6.14%)
Mutual labels:  email

Premailex

Build Status hex.pm hex.pm downloads

Preflight for your HTML emails. Adds inline styling, and converts HTML to plain text.

Features

  • Add inline CSS properties from <style>
  • Add inline CSS properties from external <link> stylesheets
  • Transform HTML to plain text

Installation

def deps do
  [
    # ...
    {:premailex, "~> 0.3.0"},

    # Optional, but recommended for SSL validation with :httpc
    {:certifi, "~> 2.4"},
    {:ssl_verify_fun, "~> 1.1"},
    # ...
  ]
end

Run mix deps.get to install it.

Getting started

Transform an HTML string to text:

Premailex.to_text(html)

Add inline styles based on styles defined in <head>:

Premailex.to_inline_css(html)

Example with Swoosh

def welcome(user) do
  new()
  |> to({user.name, user.email})
  |> from({"Dr B Banner", "[email protected]"})
  |> subject("Hello, Avengers!")
  |> render_body("welcome.html", %{username: user.username})
  |> premail()
end

defp premail(email) do
  html = Premailex.to_inline_css(email.html_body)
  text = Premailex.to_text(email.html_body)

  email
  |> html_body(html)
  |> text_body(text)
end

Example with Bamboo

def welcome_email do
  new_email
  |> subject("Email subject")
  |> to("[email protected]")
  |> from("[email protected]")
  |> put_text_layout(false)
  |> render("email.html")
  |> premail()
end

defp premail(email) do
  html = Premailex.to_inline_css(email.html_body)
  text = Premailex.to_text(email.html_body)

  email
  |> html_body(html)
  |> text_body(text)
end

HTML parser

By default, premailex uses Floki to parse HTML, but you can exchange it for any HTML parser you prefer. Meeseeks is supported with the Premailex.HTMLParser.Meeseeks module. To use it, add the following to config.exs:

config :premailex, html_parser: Premailex.HTMLParser.Meeseeks

Planned features

  • Expand relative URL's

LICENSE

(The MIT License)

Copyright (c) 2017-2019 Dan Schultzer & the Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].