Bài 17: Email – Phần 2

Trong Bài 16, chúng ta dùng tài khoản GMail để gởi mail từ RPI. Để đọc mail, chúng ta phải lập trình để định kỳ kết nối với mail server tìm mail mới, nếu có thì lấy về và phân tích nội dung.

Screenshot-2014-09-30-14.44.18

Dịch vụ email mailgun.com hoạt động theo cách khác hẳn, ngoài việc cho phép gởi mail miễn phí đến 10.000 email/tháng qua giao thức SMTP hoặc qua HTTP API, mailgun.com còn cho phép lọc mail theo tiêu chuẩn của người dùng.

Screenshot 2014-10-01 17.06.35

Khi có email đến, mailgun lập tức chuyển nội dung mail về một URI do người dùng cung cấp hay chuyển tiếp email đến một mail server khác tùy theo sự cài đặt của người dùng. Mailgun lưu trữ email theo yêu cầu nhưng không quá 3 ngày.

Như vậy, ngay khi có thư đến chúng ta nhận được nội dung thư mà không phải định kỳ kết nối với mail server. Điều này giảm tải cho ứng dụng xử lý mail trên RPI và đơn giản hóa mã lập trình.

Screenshot 2014-10-01 17.06.51

Screenshot-2014-09-30-15.00.39

1. Đăng ký tài khoản mailgun.com

Tài khoản free được đăng ký qua nhiều bước, không cần có thẻ tín dụng nếu nhu cầu gởi mail ít hơn 10.000 mail/tháng (xem Đăng ký tài khoản mailgun.com)

  • Bước 1: Yêu cầu một tài khoản. Cần một địa chỉ email đang hoạt động.
  • Bước 2: Xác nhận địa chỉ email
  • Bước 3: Active tài khoản bằng cách mở ticket trả lời các câu hỏi của mailgun
  • Bước 4a:
    + Ngay khi đăng ký, chúng ta có ngay một subdomain của mailgun, có dạng
    sandbox531234010dcbaabcd2e14321.mailgun.org
    Có thể gởi/nhận email dùng tài khoản email theo subdomain này. Tuy nhiên có hạn chế là định mức 300 email/ngày và email gởi đi có ghi gởi từ mailgun.com
    + Nếu chúng ta sở hữu một domain thì thêm vào bên cạnh subdomain của mailgun một subdomain như là mg.yourdomain, các tài khoản email sau này sẽ có dạng abc@mg.yourdomain
    + Nếu có thẻ tín dụng thì điền thông tin thẻ (mailgun không kiểm tra), khi đó có thể gởi miễn phí 10000 mail/tháng và không hạn chế số mail gởi trong ngày.
  • Bước 4b: Nếu đã đăng ký subdomain riêng thì làm theo hướng dẫn của mailgun để tạo CNAME, TXT, MX record cho subdomain đã đăng ký. Xong bước này mới có thể nhận mail.
  • Bước 5: Tạo một hay nhiều tài khoản email để gởi hay nhận mail. Chú ý là mailgun không lưu lại mail, mail đến nếu cần chỉ có thể cất giữ trong 3 ngày.
    Login vào mailgun.com và vào Control Panel, chọn domain để làm việc. Trong domain này, vào Manage SMTP credentials để tạo vài địa chỉ email (thí dụ noreply@yoursubdomain, no-reply@yoursubdomain).

Mặc dù hơi phức tạp nhưng chỉ cần làm một lần theo hướng dẫn của mailgun.com

2. Gởi mail

mailgun.com có sẵn nhiều đoạn mã cho các ngôn ngữ khác nhau để gởi mail, đơn giản nhất là dùng curl. Giới hạn kích thước email gởi đi là 25MB.

Thí dụ

curl -s --user 'api:your-key' \
 https://api.mailgun.net/v2/your-domain.com/messages \
 -F from='Excited User <me@your-domain.com>' \
 -F to='foo@example.com' \
 -F cc='bar@example.com' \
 -F bcc='baz@example.com' \
 -F subject='Hello' \
 -F text='Testing some Mailgun awesomness!' \
 --form-string html='<html>HTML version of the body</html>' \
 -F attachment=@files/cartman.jpg \
 -F attachment=@files/cartman.png
  • your-key được cung cấp khi đăng ký mailgun
  • your-domain.com do người dùng đăng ký với mailgun như domain để gởi mail
  • Các tham số -F chỉ có to= là cần phải có

3. Nhận mail

Cần tạo một route để chuyển tiếp mail đến một hộp thư lưu trữ khác.

Vào trình đơn Routes tạo một route mới, bao gồm một bộ lọc địa chỉ email người nhận (noreply hay no-replay hay khác nữa) và một hay nhiều qui luật xử lý mail.

Thí dụ Filter Expressionno-?reply@yourdomain viết theo regular expression, nghĩa là chấp nhận cả 2 đỉa chỉ trên. Actions có thể một hay nhiều, thí dụ forward(“http://abc.com/catchmail.php”), forward(“abc@gmail.com”), chuyển dữ liệu email đến abc.com và chuyển tiếp email đến abc@gmail.com

3. Ứng dụng trả lời email tự động

Mailgun không lưu trữ thư đến nhưng có thể chuyển lập tức thư đến cho một địa chỉ email khác hay một trang web xử lý mail. Vì vậy chúng ta có thể biết kịp lúc nội dung thư đến và lập trình trả lời tự động.

  • Tạo route chuyển tiếp mail, thí dụ chuyển nội dung thư đến http://abc.com/catchmail.php
  • Phân tích nội dung mail để trả lời

Trang catchmail.php phân tích thông tin nhận được trong $_POST, $_FILES, tìm từ khóa trong phần body và xây dựng email trả lời từ CSDL, sau đó gởi email trả lời đến khách hàng, cũng bằng dịch vụ mailgun.com

Leave a Comment

Filed under Software

Leave a Reply