Cấu hình SMTP của Gmail cho CakePHP

Do mình đang dùng CakePHP 2.x, cụ thể là version 2.9.9, nên trong bài viết mình sẽ dùng các config của CakePHP 2.x. Mình đã chạy ngon lành cành đào trên project thực tế 😋, các bạn cứ yên tâm mà xài, rủi may có con bug nào xuất hiện thì các bạn cứ thẳng tay vứt nó vô phần bình luận, mình sẽ xơi tái nó.

Mình lan man chút về gửi email trong PHP nha các bạn. Để gửi được email trong PHP, thì ta thường xài hàm mail(). Hàm này sẽ gọi tới sendmail daemon (là một MTA - Mail Transfer/Transport/Transfering Agent) để gửi email đi. Việc cấu hình sendmail và hàm mail() cũng không phức tạp, chỉ đọc qua hướng dẫn chút chút là làm được. Nhưng mình khuyên các bạn không nên xài nó cho dự án thực tế vì nó có nhược điểm là các email được gửi đi từ máy chủ của chúng ta (hoặc từ máy local nếu dùng Xampp hoặc Wamp), thường bị report là spam và sẽ xuất hiện trong thư mục Spam của các hòm thư. Giải pháp thay thế là dùng SMTP mail server. Đây là cách mình thường dùng, các bạn có thể dùng giải pháp khác sao cho phù hợp với dự án và phí duy trì.

Ngày mới vào nghề, mình dùng thư viện PHPMailer để gửi mail dùng tài khoản Gmail. Sau khi mình đọc các ví dụ, các tutorial trên mạng, rồi đánh vật cả ngày trời, cuối cùng cũng gửi được email. Cảm giác sung sướng không gì tả nổi. Sau đó mình chuyển qua dùng framework CodeIgniter, việc gửi email chỉ đơn giản trong nốt nhạc. Giờ xài CakePHP 2.x, cứ nghĩ việc gửi mail cũng ngon ăn, lao vào cấu hình SMTP các kiểu mà chả ăn thua, tìm docs mãi mới thấy trên trang chủ của CakePHP có hướng dẫn. Cái tội không chịu đọc hướng dẫn cẩn thận.

Đầu tiên, để gửi email thông qua Gmail, các bạn cần cho phép các ứng dụng có khả năng bảo mật kém được phép truy cập vào tài khoản của bạn theo hướng dẫn Let less secure apps access your account.

Rồi nhảy vô thư mục app/Config và thêm đoạn code sample bên dưới vào file email.php
public $gmail = array(
 'host' => 'ssl://smtp.gmail.com',
 'port' => 465,
 'username' => 'your Gmail account',
 'password' => 'secret',
 'transport' => 'Smtp',
);

Cấu hình trên là ví dụ khi bạn dùng kết nối SSL. Nếu bạn dùng kết nối TLS thì chuyển phần thông host qua tls://smtp.gmail.com, hoặc bạn có thể dùng tls option như bên dưới:
public $gmail = array(
 'host' => 'smtp.gmail.com',
 'port' => 587,
 'username' => 'your Gmail account',
 'password' => 'secret',
 'transport' => 'Smtp',
 'tls' => true,
);

Ngoài ra, các bạn có thể cấu hình thêm các thông tin về người gửi, charset, log...Tham khảo thêm tại đây nhé 😉.

Chúc các bạn thành công!

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

Xe buýt và rau muống

Học làm thơ cho ngày đặc biệt

Phòng chống dịch "Óc Chó"