12/08/2018, 13:49

Sử dụng Amazone SES để gửi mail trong rails

Giới thiệu Amazone Simple Email Service (AWS SES) là một dịch vụ SMTP server uy tín, cho phép gửi email marketing với số lượng lớn, giá thành rẻ tốt nhất hiện nay.Đây cũng là một dịch vụ mà developer cũng nên tìm hiểu để phục vụ cho công việc vì những lợi ích nó mang lại thường giúp nó trở thành ...

Giới thiệu

Amazone Simple Email Service (AWS SES) là một dịch vụ SMTP server uy tín, cho phép gửi email marketing với số lượng lớn, giá thành rẻ tốt nhất hiện nay.Đây cũng là một dịch vụ mà developer cũng nên tìm hiểu để phục vụ cho công việc vì những lợi ích nó mang lại thường giúp nó trở thành lựa chọn được ưu tiên của khách hàng.

Các bước cần thực hiện để setup tài khoản AWS SES

Để có thể sử dụng dịch vụ của AWS SES để gửi mail trong Rails, trước hết chúng ta cần thực hiện một số bước sau để setup tài khoản (ở đây là đối với trường hợp đã có tài khoản Amazone và tài khoản đã được verify đầy đủ)

1. Cấu hình Amazone SES

-Sau khi đăng nhập, click vào Services chọn SES service trong Application services :

SES1.png

-Tiếp theo, click vào SMTP Settings chọn Create My SMTP Credentials và tự tạo một tài khoản IAM User name của bạn.Đây cũng sẽ đóng vai trò là user_name khi setup môi trường gửi mail trong rails.

-Bước tiếp theo, trong mục Veryfied Senders/Email Addresses chọn Veryfi a New Email Address

SES2.png

Đây sẽ là nơi bạn veryfi các tài khoản email mà bạn dùng để gửi mail thông qua SES.

Trên đây là một số bước cơ bản để setup tài khoản SES trước khi có thể sử dụng để gửi mail.Sau đây sẽ là cách chúng ta làm việc với SES trong Rails

2. Config Mailer trong rails

với các thông tin có ở trên, ta có thể setup mailer environment trong rails như sau

 config.action_mailer.smtp_settings = {
   :address => "email-smtp.us-east-1.amazonaws.com",
   :port => 587,
   :user_name => ENV["SES_SMTP_USERNAME"], #SMTP user name
   :password => ENV["SES_SMTP_PASSWORD"], #SMTP password
   authentication: :plain,
   :enable_starttls_auto => true
}

3.Tạo một method mailer đơn giản để gửi mail

Bằng dòng lệnh sau:

rails generate mailer my_mailer

ta đã tạo ra một Mailer để tiến hành cài đặt method.Đây là một đoạn code demo về việc gửi mail bằng SES thông qua Mailer của Rails:

class MyMailer < ActionMailer::Base
  default from: 'email.example@gmail.com'

  def send_mail
    mail(to: 'random@email.com', subject: 'Email from AmazonSES!')
  end
end

Từ đây, mỗi khi gọi

send_mail.deliver

ta đã có thẻ gửi mail tới địa chỉ mà mình mong muốn.

4.Gem hỗ trợ gửi mail trong rails

  • AWS-SES: gem cũng cấp cho chúng ra một thư viện Ruby sử dụng API của AWS SES để gửi mail, ở đây chúng ta cần các thông tin cần thiết như : - default server API end-poin , có thể tham khảo các API end-point tại đây - access_key_id và secret_access_key , bạn có thể tham khảo cách để lấy 2 thông tin này tại đây chỉ cần có đủ các thông tin trên ta có thể dễ dàng sử dụng gem để gửi mail, đây là một ví dụ về cách sử dụng:
 ses = AWS::SES::Base.new(
  :access_key_id     => 'abc',
  :secret_access_key => '123',
  :server => 'email.eu-west-1.amazonaws.com'
)
ses.send_email(
  :to        => ['jon@example.com', 'dave@example.com'],
  :source    => '"Steve Smith" <steve@example.com>',
  :subject   => 'Subject Line',
  :text_body => 'Internal text body'
)

Hãy nhớ config như sau trong environment nhé:

config.action_mailer.delivery_method = :ses

5.Một số trang tham khảo

  • https://github.com/drewblas/aws-ses
  • https://robots.thoughtbot.com/deliver-email-with-amazon-ses-in-a-rails-app
  • https://www.sitepoint.com/deliver-the-mail-with-amazon-ses-and-rails/
0