- vừa được xem lúc

Gửi mail với Ruby

0 0 27

Người đăng: Nguyen Nhu Thuy

Theo Viblo Asia

Giả sử bạn có một ứng dụng Ruby đang hoạt động và cần thêm chức năng gửi email vào ứng dụng đó. Điều này có thể liên quan đến xác thực người dùng hoặc bất kỳ loại email giao dịch nào khác, nó không có gì khác biệt. Hướng dẫn này được điều chỉnh để giúp bạn triển khai gửi email bằng Ruby và giới thiệu nhiều cách cho việc đó.

Các cách gửi mail với Ruby

Hầu hết, mọi người đều lựa chọn 1 trong 3 cách.

Cách đơn giản nhất là sử dụng class Net::SMTP. Nó cung cấp các tính năng để gửi mail qua SMTP. Hạn chế của cách này là Net::SMTP thiếu chức năng soạn email. Bạn luôn phải tự tạo chúng, và nó sẽ mất chút thời gian.

Cách thứ 2 là sử dụng Ruby gem như Mail, Pony, .... Cách này giúp bạn thực hiện các hoạt động gửi mail 1 cách đơn giản và hiệu quả hơn. Action Mailer là lựa chọn hoàn hảo và cũng được Rails chọn làm default.

Cách thứ 3 là sử dụng class Socket. Class này cho phép bạn giao tiếp giữa những tiến trình, hay trong 1 tiến trình. Vì vậy, cũng có thể gửi mail với Socket. Tuy nhiên, Socket không hỗ trợ các chức năng chuyên sâu cho việc gửi mail, nên có thể bạn sẽ không thích cách này.

Net::SMTP

require 'net/smtp' message = <<END_OF_MESSAGE
From: YourRubyApp <_@.com>
To: BestUserEver <_@.com>
Subject: Any email subject you want Date: Tue, 02 Jul 2019 15:00:34 +0800 Lorem Ipsum
END_OF_MESSAGE
Net::SMTP.start('your.smtp.server', 25) do |smtp| smtp.send_message message, '_@.com', '_@.com'
end

Đây là 1 ví dụ đơn giản để gửi 1 email thuần text bằng SMTP (documentation). Nội dung email sẽ báo gồm 4 headers: From, To, Subject, and Date, và kèm theo đoạn body text bị cách với 4 headers bởi 1 dòng trống. 'your.smtp.server' là server SMTP, 25 là port default. Nếu cần thiết, bạn có thể chỉ định rõ username, password, hoặc xác thực scheme.

Net::SMTP.start('your.smtp.server', 25, ‘localhost’, ‘username’, ‘password’ :plain) do |smtp|

Sau đó bạn có thể sử dụng method send_message để gửi mail và chỉ định địa chỉ của người gửi, người nhận. Block SMTP.start sẽ tự động đóng connection tới SMTP tự động sau khi gửi mail.

Ruby Mail

Thư viện này nhằm 1 mục đích là để quản lý các hoạt động liên quan tới email bao gồm cả gửi và nhận mail.

mail = Mail.new do from '_@.com' to '_@.com' subject 'Any subject you want' body 'Lorem Ipsum'
end

Bạn có thể change SMTP settings:

Mail.defaults do delivery_method :smtp, address: "localhost", port: 1025
end

hoặc thậm chí cả method gửi mail.

mail.delivery_method :sendmail mail.deliver

Ở trên là cách ví dụ đơn giản, để tìm hiểu thêm về các TH phức tạp hơn như gửi mail với format HTML, gửi mail với file đính kèm, hay sử dụng các thư viện khác như Pony, Action Mailer thì tìm hiểu thêm tại đây.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bài toán tìm đường đi ngắn nhất với giải thuật Dijkstra

Với các bạn sinh viên chuyên ngành công nghệ thông tin, chắc không lạ gì với bài toán tìm đường đi ngắn nhất (Shortest Path Problems) trong đồ thị trọng số nữa. Ở bài viết lần này, mình sẽ làm 3 việc:.

0 0 122

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 211

- vừa được xem lúc

Những thay đổi trong ruby 3.0

. 2020 là một năm lớn đối với cộng đồng Ruby. Những người sáng lập Ruby có một món quà thực sự tuyệt vời cho chúng ta vào giáng sinh với việc phát hành Ruby 3.

0 0 31

- vừa được xem lúc

Có gì đặc biệt trong phiên bản Ruby 3x3 ?

Hello guys, chắc hẳn thời gian vừa rồi chúng ta cũng đã nghe qua thông tin Ruby sắp cho ra mắt Ruby version 3, hay còn được gọi là ruby 3x3, vậy liệu Ruby version 3 này có gì mới, và có những update nào đáng phải kể đến, và tại sao mọi người lại gọi nó là ruby version 3x3, thì trong bài ngày hôm nay

0 0 30

- vừa được xem lúc

Cách sử dụng class Time & Date trong Ruby (Phần 1)

Time là một class trong Ruby, nó sẽ giúp chỉnh sửa format, trích xuất thông tin một cách hiệu quả theo ý của bạn. . Topic hôm nay chúng ta có gì nào. .

0 0 83

- vừa được xem lúc

Ruby 3.0 có gì mới

Ruby 3.0.0 đã được ra mới được ra mắt vào tháng 12/2020, mục tiêu của bản 3.0.

0 0 26