Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article) Show Tin nhắn văn bản đã trở nên vô cùng phổ biến trên khắp thế giới -- đến mức ngày càng có nhiều ứng dụng web tích hợp SMS để thông báo cho người dùng về sự kiện, chương trình bán hàng hoặc phiếu giảm giá trực tiếp thông qua các thiết bị di động của họ. Trong hướng dẫn này, chúng tôi sẽ khái quát các nguyên tắc cơ bản của việc gửi tin nhắn văn bản bằng PHP. Tổng quan
Bên dưới là một sơ đồ được đơn giản hoá về cách một tin nhắn có thể được gửi từ một ứng dụng web đến một thiết bị không dây. Chúng ta sẽ đi tìm hiểu từng bước một:
Hầu hết các mạng không dây đều có một cổng SMS mà thông qua đó các tin nhắn email có thể được gửi dưới dạng các tin nhắn văn bản đến một thiết bị di động. Đây là điều tuyệt vời, bởi vì, từ quan điểm của nhà phát triển, nói chung nó là miễn phí - tuy vậy, tất nhiên là nó không miễn phí đối với người dùng cuối. Các khoản phí vẫn áp dụng đối với người nhận tin nhắn và các tin nhắn được gửi thông qua email sẽ được tính phí như một tin nhắn văn bản không thông qua mạng. Email đến SMSĐể gửi SMS thông qua email, bạn thường chỉ cần hai thứ:
Quy ước sau có thể được tuân theo đối với hầu hết các nhà mạng:
Để gửi văn bản đến Mr. Example, bạn chỉ cần thêm vào bất kỳ ứng dụng email nào, nhập một tin nhắn và nhấn gửi. Việc này sẽ gửi một tin nhắn văn bản đến số điện thoại +1 (385) 555-0168 trên Mạng Không dây của Verizon. Ví dụ, tôi sẽ gửi một tin nhắn văn bản tới chính mình bằng Gmail. Khi điện thoại của tôi nhận được tin nhắn đó, nó sẽ trông giống như sau: Hàm mail của PHP Hãy tiến thêm một bước nữa. Bằng việc sử dụng SMS Gateway, chúng ta có thể gửi một tin
nhắn văn bản thông qua email bằng hàm bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) Bạn có thể đọc thêm về nó ở đây.
Để lặp lại tính năng như trên, chúng ta có thể viết code PHP sau đây: mail( '', '', 'Testing' ); Thử nghiệm Hãy làm một bài kiểm tra với PHP để đảm bảo rằng mọi thứ đều được thiết lập một cách chính xác và hàm <?php var_dump( mail( '##########@vtext.com', '', 'This was sent with PHP.' ) ); // bool(true) ?> Khi điện thoại của tôi nhận được tin nhắn, nó trông như sau:
Như bạn có thể thấy trong hình ở trên, tin nhắn cho biết nó là từ Gmail. Điều này là do tôi định tuyến tất cả các tin nhắn đi của tôi từ máy chủ cục bộ thông qua dịch vụ đó. Thật không may, khi viết bài này, tôi đã không thể thay đổi header Thêm Tính khả dụngMarkupVới những cơ sở đã có, hãy lấy ý tưởng này và quấn một giao diện người dùng xung quanh nó. Đầu tiên, chúng ta sẽ thiết lập một form đơn giản: <!DOCTYPE html> <head> <meta charset="utf-8" /> </head> <body> <div id="container"> <h2>Sending SMS with PHP</h2> <form action="" method="post"> <ul> <li> <label for="phoneNumber">Phone Number</label> <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li> <li> <label for="carrier">Carrier</label> <input type="text" name="carrier" id="carrier" /> </li> <li> <label for="smsMessage">Message</label> <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea> </li> <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li> </ul> </form> </div> </body> </html> Giao diệnTiếp theo, chúng ta sẽ áp dụng một số CSS: body { margin: 0; padding: 3em 0; color: #fff; background: #0080d2; font-family: Georgia, Times New Roman, serif; } #container { width: 600px; background: #fff; color: #555; border: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; padding: 1em 2em; margin: 0 auto; -webkit-box-shadow: 3px 7px 5px #000; -moz-box-shadow: 3px 7px 5px #000; -ms-box-shadow: 3px 7px 5px #000; box-shadow: 3px 7px 5px #000; } ul { list-style: none; padding: 0; } ul > li { padding: 0.12em 1em } label { display: block; float: left; width: 130px; } input, textarea { font-family: Georgia, Serif; } Code này cho chúng ta form đơn giản sau đây: ScriptPhần quan trọng nhất cho việc này là script PHP. Chúng ta sẽ viết một ít code đó ngay bây giờ: <?php if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) { if ( isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) && !empty( $_REQUEST['phoneNumber'] ) && !empty( $_REQUEST['carrier'] ) ) { $message = wordwrap( $_REQUEST['smsMessage'], 70 ); $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier']; $result = @mail( $to, '', $message ); print 'Message was sent to ' . $to; } else { print 'Not all information was submitted.'; } } ?> <!DOCTYPE html>
Lưu ý: Phương thức Code Hoàn chỉnh<?php if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) { if ( isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) && !empty( $_REQUEST['phoneNumber'] ) && !empty( $_REQUEST['carrier'] ) ) { $message = wordwrap( $_REQUEST['smsMessage'], 70 ); $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier']; $result = @mail( $to, '', $message ); print 'Message was sent to ' . $to; } else { print 'Not all information was submitted.'; } } ?> <!DOCTYPE html> <head> <meta charset="utf-8" /> <style> body { margin: 0; padding: 3em 0; color: #fff; background: #0080d2; font-family: Georgia, Times New Roman, serif; } #container { width: 600px; background: #fff; color: #555; border: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; padding: 1em 2em; margin: 0 auto; -webkit-box-shadow: 3px 7px 5px #000; -moz-box-shadow: 3px 7px 5px #000; -ms-box-shadow: 3px 7px 5px #000; box-shadow: 3px 7px 5px #000; } ul { list-style: none; padding: 0; } ul > li { padding: 0.12em 1em } label { display: block; float: left; width: 130px; } input, textarea { font-family: Georgia, Serif; } </style> </head> <body> <div id="container"> <h2>Sending SMS with PHP</h2> <form action="" method="post"> <ul> <li> <label for="phoneNumber">Phone Number</label> <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li> <li> <label for="carrier">Carrier</label> <input type="text" name="carrier" id="carrier" /> </li> <li> <label for="smsMessage">Message</label> <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea> </li> <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li> </ul> </form> </div> </body> </html> Khắc phục sự cốLỗi Localhost Để sử dụng hàm Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\sms\mail-test.php ...bạn sẽ phải cài đặt và cấu hình một máy chủ mail. Việc này nằm ngoài phạm vi của hướng dẫn này. Tuy nhiên, nếu bạn đang làm việc trên máy cục bộ của bạn, thì chuyển sang một cái gì đó đại loại như XAMPP có thể giải quyết được vấn đề này. Ngoài ra, hãy thử cài đặt Mercury Mail cùng với WAMP, MAMP hay trên một hệ thống LAMP (hoặc SAMP hoặc OAMP, v.v...) (rất nhiều 'AMP'). PHPMailerMột lựa chọn khác (cách làm mà tôi thích) là sử dụng PHPMailer. Dưới đây là một ví dụ về cách sử dụng PHPMailer để kết nối đến máy chủ SMTP của Gmail và gửi tin nhắn. Việc sử dụng nó cũng đơn giản như bao gồm một lớp trong script của bạn. require 'class.phpmailer.php'; // Instantiate Class $mail = new PHPMailer(); // Set up SMTP $mail->IsSMTP(); // Sets up a SMTP connection $mail->SMTPDebug = 2; // This will print debugging info $mail->SMTPAuth = true; // Connection with the SMTP does require authorization $mail->SMTPSecure = "tls"; // Connect using a TLS connection $mail->Host = "smtp.gmail.com"; $mail->Port = 587; $mail->Encoding = '7bit'; // SMS uses 7-bit encoding // Authentication $mail->Username = ""; // Login $mail->Password = "password"; // Password // Compose $mail->Subject = "Testing"; // Subject (which isn't required) $mail->Body = "Testing"; // Body of our message // Send To $mail->AddAddress( "##########@vtext.com" ); // Where to send it var_dump( $mail->send() ); // Send! Code này sẽ in ra một cái gì đó cùng với các dòng: Có thể mất nhiều công sức hơn một chút để thiết lập kết nối tùy thuộc vào tình huống của bạn. Nếu bạn có ý định sử dụng Gmail, Google đã cung cấp cho bạn thông tin về việc kết nối. Tóm tắtCó rất nhiều cách khác nhau để hoàn thành tác vụ gửi SMS thông qua một ứng dụng web. Cách này chỉ dành cho khối lượng tin nhắn thấp (ít hơn 1.000 tin nhắn văn bản mỗi tháng) và các nhà phát triển muốn thử nghiệm mà không cần tốn nhiều tiền. Các lựa chọn khác gồm có:
Hướng dẫn này không bao quát toàn bộ việc gửi tin nhắn văn bản với PHP; nhưng nó sẽ giúp bạn làm quen! Tôi hy vọng hướng dẫn này đã gây hứng thú đối với bạn. Cảm ơn bạn đã theo dõi! |