Responsive For Email Templates from a Rails App with MJML

Chắc hẳn các anh em developer phát triển hay design template mail của chức năng sendmail (ví dụ chức năng xác thực email, report order, …). Với mình, đa số các mail chỉ cần show đủ thông tin là được, ví dụ:

Haizz, nếu là mình khi nhận được cái mail này, mình chỉ biết là lướt qua luôn vì không có những thông tin gì cần chú ý cả.

So với ngày xưa website đã có những cải tiến nhiều, 1 website không những chứa những thông tin cần thiết, mà nó cần phải tương thích tất cả thiết bị ngoài máy tính ra (smartphone, tablet, tivi, …) Vì thế mail cũng vậy, cũng cần phải tương thích đến các thiết bị, phân chia bố cục rõ ràng, người dùng dễ tìm thấy thông tin mình cần trong mail.

Giới thiệu MJML

MJML là một ngôn ngữ đánh dấu được thiết kế để giảm thiểu sự khó khăn của việc lập trình một email có khả năng thích ứng với các thiết bị khác nhau. Nó cung cấp một cú pháp ngữ nghĩa, kiến trúc dựa trên thành phần, và các mẫu cho các ứng dụng email phổ biến, bao gồm Outlook.

Tại sao nên sử dụng MJML?

1. Cú pháp đơn giản

2. Responsive grid

Tương tự bootstrap, MJML cung cấp cho developer responsive grid bao gồm Rows and Columns, giúp developer phân chia bố cục cho layout mail

3. Hỗ trợ, tương thích đến tất cả các service mail

Đa số người dùng thường sử dụng các service mail (outlook, gmail, …) Đa số các service này đều có các đọc mã HTML khác nhau, điều này khiến cho mail xảy ra hiện tượng, ở service này hiện thị OK, nhưng ở service nọ hiển thị bị bể layout.

Nhưng với MJML thì mọi chuyện trên đã được giải quyết.

Cách cài đặt MJML trong Rails App

document: https://mjml.io/

gem: https://github.com/sighmon/mjml-rails

Add gem mjml-rails vào Gemfile

JavaScript
........
group :test do
  # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
  gem 'capybara'
  gem 'database_cleaner-active_record'
end

gem 'mjml-rails' <-----------------

Tạo function để gọi sendmail (sử dụng ActionMailer)

JavaScript
class OrderMailer < ApplicationMailer
  def new_order_email
    mail(to: "[email protected]", from: "[email protected]") do |format|
      format.text
      format.mjml <----------
    end
  end
end

Tạo file view với đuôi file là .mjml để App có thể đọc được cú pháp của mjml

JavaScript
<!-- app/views/order_mailer/new_order_email.mjml -->
<mj-section>
  <mj-column>
    <mj-text>
      Hello TOMOSIA - Hơ Hơ Hơ
    </mj-text>
  </mj-column>
</mj-section>

Kết quả

Tóm lại

MJML là một công cụ hữu ích và dễ sử dụng để tạo ra các email chuyên nghiệp và hiện đại. Bạn có thể tìm hiểu thêm về MJML qua document. Nó sẽ giúp chúng ta nhiều trong tương lai.

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

Setup slack notifications in Rails

Table of Contents Hide Setup Slack:Setup Rails: Slack là một phần mềm Worksplace sử dụng thông dụng rộng…
Read More

SOLID Principles

Table of Contents Hide Single-responsibility PrincipleOpen/Closed Principle (OCP)Liskov Substitution Principle (LSP)Interface Segregation Principle (ISP)Dependency Inversion Principle (DIP)Advantages of…
Read More

Building a GraphQL API in Rails

Table of Contents Hide GraphQL là gì?Thiết Lập Dự Án RailsThêm DependenciesTạo Schema GraphQLĐịnh Nghĩa Các LoạiKiểm Thử…