1. Gửi mail trong rails sử dụng active job.

Để gửi mail dưới background trong rails, bạn cần đăng ký một active job sử dụng 1 hàng đợi để thực thi.

Mặc định Rails sẽ sử dụng ActionMailer::DeliveryJob với queue sẵn có để gửi mail:

Notifier.welcome(User.first).deliver_later

 

Nhưng từ Rails 5.2 bạn có thể sử dụng active job của bạn và queue mong muốn để gửi mail.

# Đăng ký active job bạn muốn tùy biến
class CustomNotifierDeliveryJob < ActionMailer::DeliveryJob
  queue_as 'your_custom_queue'
end


# Đăng ký mailer của bạn sử dụng job trên
class CustomNotifier < ApplicationMailer
  self.delivery_job = CustomNotifierDeliveryJob
end

 

2. Cấu hình SendGrid API v3 trong rails

SendGrid Api v2 và v3 không sử dụng username và password giống v1 nữa mà thay vào đó là sử dụng api key, nên để cấu hình cho Rails có thể sử dụng được các file views mặc định của mailer thì phải cấu hình như sau:

# Cấu hình trong file config/application.rb

config.action_mailer.smtp_settings = {
  user_name: 'apikey',
  password: ENV['SENDGRID_API_KEY'],
  domain: 'https://blog.daovanhung.com',
  address: 'smtp.sendgrid.net',
  port: 587,
  authentication: :plain,
  enable_starttls_auto: true
}

 

Chú ý là ở trên vẫn sử dụng cấu hình của v1 nhưng user_name có giá trị là apikey và password có giá trị chính là api key.