20/09/2018, 15:34

Tìm hiểu về Gem Letter Opener

Gem Letter Opener là gì? Việc xây dựng một website ắt hẳn không thể thiếu xây dựng tính năng gửi mail. Tuy nhiên trong quá trình xây dựng bạn có thể gặp một số vấn đề là: Bạn phải thiết lập một email để test Bạn vô tình gửi email đến cho một địa chỉ email khác dẫn đến việc rò rỉ thông ...

Gem Letter Opener là gì?

Việc xây dựng một website ắt hẳn không thể thiếu xây dựng tính năng gửi mail. Tuy nhiên trong quá trình xây dựng bạn có thể gặp một số vấn đề là:

  • Bạn phải thiết lập một email để test
  • Bạn vô tình gửi email đến cho một địa chỉ email khác dẫn đến việc rò rỉ thông tin Với những vấn đề trên thì gem Letter Opener ra đời đề bạn có thể kiểm tra email ngay trên trình duyệt mặc định thay vì phải gửi email đi.

Cài đặt với rails

Đầu tiên như thường lệ để cài đặt gem này vào ứng dụng rail của mình chúng ta cần phải thêm gem vào gemfile. Do đây là gem để test nên chúng ta sẽ thêm vào trong môi trường development

gem "letter_opener",: group =>: development

Sau đó bạn cần thiết lập phương thức delivery method trong file config/environments/development.rb:

config.action_mailer.delivery_method =: letter_opener 
config.action_mailer.perform_deliveries = true

Giờ đây, mọi email sẽ xuất hiện trong trình duyệt của bạn thay vì được gửi đi. Các tin nhắn được lưu trữ trong tmp/letter_opener.

Cài đặt khi không sử dụng rails

Khi không sử dụng rails chúng ta có thể sử dụng gem Mail để thiết lập. Chỉ cần thiết lập các phương pháp phân phối khi cấu hình Mail và chỉ định một vị trí:

require "letter_opener"
Mail.defaults do
  delivery_method LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
end

Phương pháp này tương tự nếu bạn đang sử dụng gem Pony:

require "letter_opener"
Pony.options = {
  :via => LetterOpener::DeliveryMethod,
  :via_options => {:location => File.expand_path('../tmp/letter_opener', __FILE__)}
}

Ngoài ra nếu bạn đang sử dụng ActionMailer (không có rails) bạn sẽ cần thêm các phương pháp phân phối:

require "letter_opener"
ActionMailer::Base.add_delivery_method :letter_opener, LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
ActionMailer::Base.delivery_method = :letter_opener

Sử dụng với máy chủ riêng biệt

Letter Opener sử dụng Launchy để mở mail đã gửi trong trình duyệt. Điều này có nghĩa là quá trình này được chạy trên local. Vì vậy nếu bạn đang sử dụng một máy chủ riêng biệt hay một máy ảo thì các bạn hãy tìm hiểu sử dụng Mailtrap hoặc MailCatcher để thay thế.

Tham khảo tại

link tham khảo

Như vậy chúng ta đã cùng nhau tìm hiểu qua về gem Letter Opener. Cảm ơn các bạn đã theo dõi.

0