ส่งอีเมลจาก localhost บน XAMPP เว็บเซิร์ฟเวอร์

คราวที่แล้วได้แนะนำวิธีการติดตั้งเว็บเซิร์ฟเวอร์ xampp ไปแล้ว ต่อไปเราจะมาคอนฟิกการแจ้งเตือนผ่านอีเมลบนเว็บเซิร์ฟเวอร์กันบ้าง จุดประสงค์ของการส่งอีเมลจาก xampp เว็บเซิร์ฟเวอร์ก็คือ เมื่อไหร่ก็ตามที่มีสิ่งผิดปรกติเกิดขึ้นกับเว็บเซิร์ฟเวอร์ของเรา xampp ก็จะทำการส่ง error log มาที่อีเมลในสมาร์ทโฟน ซึ่งปรกติเราพกติดตัวเกือบตลอดเวลาอยู่แล้ว ดังนั้นหากมีสิ่งผิดปรกติบนเว็บเซิร์ฟเวอร์ xampp เราก็จะได้รับอีเมลในโทรศัพท์มือถือทันที

อย่างแรกเราต้องมีบัญชีอีเมล pop3 ก่อน ซึ่งในตัวอย่างผมใช้บัญชี pop3 ของอินเตอร์เน็ต 3BB จากนั้นคอนฟิกที่ไฟล์ C:\xampp\php\php.ini อย่าลืมแบ็คอัพไฟล์ต้นฉบับก่อนทำการแก้ไขเก็บไว้ด้วยนะครับ โปรแกรมที่ใช้แก้ไขอาจจะใช้ Notepad หรือโปรแกรมอื่นก็แล้วแต่ท่านสะดวก โดยในตัวอย่างผมใช้โปรแกรม Edit Plus ครับ เมื่อเปิดโปรแกรมขึ้นมาค้นหาข้อความ “[mail function]” จากนั้นแก้ไขตามรูปตัวอย่างครับ

ต่อมาเปิดไฟล์ C:\xampp\sendmail\sendmail.ini ไฟล์นี้ข้อความไม่เยอะ หาง่ายแก้ไขตามรูปภาพเลยครับ

จากนั้นสร้างสคิปที่ C:\xampp\htdocs\send-log.php ดังนี้ครับ

<?php
 $filename = 'weblog.txt';
 $path = './';
 $file = $path . "/" . $filename;

 $mailto = 'bsailom@3bbmail.com';
 $subject = 'Subject: Userlog file';
 $message = 'Weblog file on sailom blog.';

 $content = file_get_contents($file);
 $content = chunk_split(base64_encode($content));

 // a random hash will be necessary to send mixed content
 $separator = md5(time());

 // carriage return type (RFC)
 $eol = "\r\n";

 // main header (multipart mandatory)
 $headers = "From: xampp server <xampp@localhost>" . $eol;
 $headers .= "MIME-Version: 1.0" . $eol;
 $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol;
 $headers .= "Content-Transfer-Encoding: 7bit" . $eol;
 $headers .= "This is a MIME encoded message." . $eol;

 // message
 $body = "--" . $separator . $eol;
 $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol;
 $body .= "Content-Transfer-Encoding: 8bit" . $eol;
 $body .= $message . $eol;

 // attachment
 $body .= "--" . $separator . $eol;
 $body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol;
 $body .= "Content-Transfer-Encoding: base64" . $eol;
 $body .= "Content-Disposition: attachment" . $eol;
 $body .= $content . $eol;
 $body .= "--" . $separator . "--";

 //SEND Mail
 if (mail($mailto, $subject, $body, $headers)) {
   echo "mail send ... OK"; // or use booleans here
 } else {
   echo "mail send ... ERROR!";
   print_r( error_get_last() );
 }
 ?>

โดยไฟล์ weblog.txt ถูกสร้างมาจากไฟล์ index.php เมื่อมีผู้เข้ามาเยี่ยมชมเว็บไซต์เราก็ดึงข้อมูลจากตัวแปร REMOTE_ADDR หรือ HTTP_USER_AGENT เป็นต้น เสร็จเรียบร้อยแล้วเราสามารถทดสอบโปรแกรมผ่าน Command Prompt บน Windows ดังนี้

cd \xampp\htdocs
C:\xampp\htdocs>\xampp\php\php.exe send-log.php
mail send ... OK

จากนั้นเราก็ไปตั้งค่ารับอีเมล pop3 ในเครื่องสมาร์ทโฟน เมื่อสั่ง Run โปรแกรมจะมีการส่งอีเมลจาก xampp มายัง 3bbmail ในเครื่องสมาร์ทโฟนของเราครับ

Leave a Reply

Your email address will not be published. Required fields are marked *