Giải pháp email
Email ngày nay đã rất phổ biến và được sử dụng rất nhiều. Bài viết này của mình không nói về cách sử dụng các dịch vụ email mà nói về email được gửi tự động từ các trang web
. Bạn có 1 trang web, có thể là 1 diễn đàn chẳng hạn, và diễn đàn của bạn không thể gửi được email kích hoạt cho thành viên, không thể gửi mật khẩu cho thành viên khi họ quên mật khẩu… Các host thường disable hàm mail để tránh việc spam và gửi email nặc danh, cũng có những host hỗ trợ send email nhưng email gửi đi lại bị tống vào spam
,… Có 1 giải pháp là sử dụng smtp để gửi thư (khá nhiều loại mã nguồn có sẵn đều có tùy chọn này, ở VBB có trong option->email, ở WordPress thì có rất nhiều plugin như WP-EMail, Swift SMTP,…), nhưng smtp của hầu hết các dịch vụ email như gmail chẳng hạn lại sử dụng kết nối bảo mật tls/ssl và rồi rất nhiều host không hỗ trợ socket tls/ssl, nó báo lỗi thế này “Unable to find the socket transport “tls (ssl)” – did you forget to enable it when you configured PHP?”. Phải làm sao bây giờ
Mình xin đưa ra cho các bạn 1 giải pháp(nếu host của bạn không send được mail mà lại không hỗ trợ soket ssl/tls) như sau:
Chọn 1 host free(tạm gọi cái freehost này là remote-mail-server) bất kỳ hỗ trợ socket transport ssl/tls, theo như mình biết thì byethost có hỗ trợ cái này
Các kết nối đến smtp của gmail sẽ được đặt trên remote-mail-server, công việc còn lại chỉ là truyền nội dung email và địa chỉ người nhận sang đây
Có thể dùng GET hoặc POST thì tùy bạn
Dùng hàm file_get_contents hoặc fsockopen để chạy và truyền các biến vào cho file làm nhiệm vụ gửi email trên remote-mail-server
Làm 1 ví dụ cụ thể cho dễ hiểu nhé
Trên remote-mail-server tạo 1 file mail.php chẳng hạn, nhận vào 2 biến là to và data ở dạng GET. Tức là để gửi email cho địa chỉ abc@abc.vn với nội dung là “Xin chào” chẳng hạn, ta chỉ việc cho chạy đường dẫn http://your-remote-mail-server/mail.php?to=abc@abc.vn&data=Xin+Chào Trong trang web của bạn bạn có thể dùng file_get_contents(‘ http://your-remote-mail-server/mail.php?to=abc@abc.vn&data=Xin+Chào’) để thực hiện gửi email.
Để bảo mật thì bạn nên giấu kín địa chỉ tới file mail.php ở trên remote-mail-server.
Việc viết file mail.php khá đơn giản, bạn có thể tách luôn từ trong code của trang web hiện có hoặc sử dụng 2 class là smtp và php-mailer(có thể download 2 class này tại sourceforge) để viết. Đây là file mail.php mà mình đã viết(nói viết cho oai chứ cũng C&P là chủ yếu
) cần phải có thêm 2 class smtp và php-mailer để có thể hoạt động.
Tóm lại thì giải pháp này là gì. Code của bạn không chạy được trên host của bạn và chúng ta có giải pháp là đưa đoạn code này sang 1 host khác, rồi từ trang web của bạn ta chạy đoạn code ở trên host đó
đơn giản chỉ có vậy thôi
Chúc các bạn thành công
[...] Giải pháp email [...]
Bác hướng dẫn cụ thể cho em với! host em ko hỗ trợ gì cả! từ hàm mail tới ssl, làm sao để gửi mail cho thành viên kích hoạt đây?