|
ติดตั้ง SMTP Service สำหรับส่งอีเมล์บน Windows 7 (PHP,ASP.Net,IIS,Apache) |
ติดตั้ง SMTP Service สำหรับส่งอีเมล์บน Windows 7 (PHP,ASP.Net,IIS,Apache) ในการเขียนโปรแกรมไม่ว่าจะรันด้วย Apache หรือ IIS ทั้งประเภทเว็บที่เขียนด้วย PHP , ASP หรือ ASP.net บน Windows 7 เราจะพบว่าไม่สามารถที่จะทดสอบการส่งอีเมล์ออกได้ อันเนื่องจาก ใน Windows7 Version ใหม่ จะมีการตัด Feature ตัว SMTP Service ออก จะไม่มีเหมือน Windows Server 2008 หรือ 2012 (ไม่รู้จะเอาออกไปทำไม เข้าใจว่าน่าจะลดปัญหา Spam อีเมล์ออกจากเครื่อง) ซึ่งบน IIS (Internet Information Services) จะมีแแค่เพียง SMTP E-Mail เป็นตัวระบุและชี้ Path IP ไปยัง SMTP Server ที่จะใช้เท่านั้น ฉะนั้นการที่จะส่งอีเมล์ออกจาก Windows 7 จะต้องหาดาวน์โหลดตัว SMTP Server มาติดตั้งบน Windows 7 ซะก่อน ซึ่งสาารถใช้ได้อยู่หลายตัว แต่ที่จะแนะนำให้ใช้คือ hMailServer เป็น Free SMTP Server และสามารถนำมาใช้กับ Windows 7 ได้ทั้งเว็บที่รันด้วย IIS และ Apache Web Server
SMTP E-Mail Windows 7
บทความนี้อันเนื่องจากเห็นสมาชิกโพสในกระทู้บ่อย ๆ และก็ว่างพอดี เลยจัดให้ซะหน่อย มาลองดู Code ของ PHP ที่ใช้ส่งอีเมล์แบบง่าย ๆ
sendmail.php
<html>
<head>
<title>ThaiCreate.Com PHP Sending Email</title>
</head>
<body>
<?php
$strTo = "[email protected]";
$strSubject = "Test Send Email";
$strHeader = "From: [email protected]";
$strMessage = "My Body & My Description";
$flgSend = mail($strTo,$strSubject,$strMessage,$strHeader);
if($flgSend)
{
echo "Email sending.";
}
else
{
echo "Cannot send Mail!";
}
?>
</body>
</html>
หลังจากที่ทดสอบรันดูด้วย Apache หรือ IIS จะมี Error ว่า
Error
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 D:\Appserv\www\sendmail.php on line 11
Cannot send Mail!
จาก Error นี้เข้าใจความหมายง่าย ๆ ว่า หาตัว SMTP ที่อยู่บน localhost ไม่เจอ ซึ่งปกติแล้วบน php.ini เราไม่จำเป็นจะต้องทำการ Config อะไรเพิ่มเติม เพราะค่า Default ของมันจะชี้ไปที่ localhost และ Port 25 อยู่แล้ว
กรณีที่รันด้วย IIS (ถ้ารันด้วย Apache เช่นพวก Appserv หรือ XAMPP ก็ข้ามขั้นตอนนี้ไปได้เลย)
ในกรณีที่รันด้วย IIS เราสามารถเปิด SMTP E-mail ที่อยู่บน IIS
ซึ่งตัวนี้ไม่ใช่ SMTP Server แต่เป็นเพียงตัวชี้ไปยัง SMTP Server เท่านั้น
ในกรณีที่มี SMTP Server อยู่แล้ว เราก็สามารถที่จะชี้ไปยัง IP ของ SMTP นั้น ๆ และเรียกใช้งานได้เลย
หรือในกรณีที่ต้องการติดตั้ง SMTP บน local ก็จะต้องเลือกเป็นแบบ localhost และดาวน์โหลดตัว SMTP Server มาติดตั้งซะก่อน (อย่าลืมวิธีนี้กรณีรัน PHP บน IIS เท่านั้น ถ้ารันด้วย Apache เช่นพวก Appserv หรือ XAMPP ก็ข้ามขั้นตอนนี้ไปได้เลย)
การติดตั้ง SMTP Server บน Windows 7 ใช้ส่งอีเมล์ทั้งบน IIS และ Apache (Appserv,XAMPP)
Download โปรแกรม hmailserver ซึ่งเป็น Freeware สามารถใช้งานได้ฟรี
https://www.hmailserver.com
วิธีติดตั้ง hMailServer 5.3.3 installation step by step by PlaKriM
ติดตั้ง hMailServer
เลือก Path ที่จัดเก็บไฟล์ ซึ่ง Path นี้จะไว้ดูพวก Queue หรืออีเมล์ที่ถูกส่งออกด้วย
เลือกตั้ง 2 ตัว โดยในขั้นตอนการติดตั้ง อาจจะมีให้กำหนด Password ในการ Access เข้าจัดการกับ hMailServer
เลือก Run hMailServer Administator
เลือก Connect
ขั้นตอนนี้ให้ใส่ Password ที่ได้จากขั้นตอนการติดตั้ง
เลือก Add Domain
ในนี้จะใส่เป็น thaicreate.com
ได้โดเมนเรียบเร้อย จากนั้นให้คลิกที่ Accounts
ทดสอบสร้าง Account ชื่อว่า [email protected] พร้อมกับ Password (ซึ่ง Password เราจะใช้ในกรณีที่ Authen ผ่าน SMTP)
ได้ Account ของ [email protected] เรียบร้อยแล้ว จากนั้นใน Code ของ PHP เพิ่มคำสั่ง
ini_set("SMTP","localhost");
ini_set("sendmail_from","[email protected]");
ไม่จำเป็นจะต้องใส่ Password เพราะเราไม่ได้ส่งผ่านการ Authen แบบ SMTP
Code ทั้งหมด
<html>
<head>
<title>ThaiCreate.Com PHP Sending Email</title>
</head>
<body>
<?php
ini_set("SMTP","localhost");
ini_set("sendmail_from","[email protected]");
$strTo = "[email protected]";
$strSubject = "Test Send Email";
$strHeader = "From: [email protected]";
$strMessage = "My Body & My Description";
$flgSend = mail($strTo,$strSubject,$strMessage,$strHeader);
if($flgSend)
{
echo "Email Sending.";
}
else
{
echo "Cannot send Mail!";
}
?>
</body>
</html>
ทดสอบรันใหม่ เราจะได้ผลลัพธ์ดังรูป
การทดสอบว่าอีเเมล์ได้ถูกส่งออกไปหรือไม่ให้คลิกที่ Status -> Delivery queue -> Refresh ซึ่งเราจะพบกับอีเมล์ที่เตรียมถูกส่งออกไป
รายละเอียดของอีเมล์
เพิ่มเติม
ในการส่งอีเมล์ด้วย PHP บน Windows 7 นั้น ถ้าอีเมล์ถูกส่งออกไปยัง Queue นั่นก็หมายความว่า PHP สามารถส่งอีเมล์ออกไปได้แล้ว แต่อีเมล์จะไปถึงปลายทางหรือไม่นั้น อันนี้อยู่ที่ระบบ Network ล้วน ๆ เช่นถ้าคุณต่ออินเตอร์เน็ตผ่านพวก ADSL ของ ISP หรืออินเตอร์เน็ต ทั่ว ๆ ไป หรือแม้กระทั่ง Network ในบริษัท หน่วยงานต่าง ๆ เข้าใจว่าผู้ให้บริการเหล่านี้จะ Block อีเมล์ที่ส่งมาจากเครื่องของคุณอย่างแน่นอน เพื่อเป็นการป้องกัน Spam ออกจากเครื่อง ฉะนั้นจะเห็นว่าอีเมล์จะไม่ถูกส่งออกไปจาก Queue แต่ถ้า IP อยู่ในระบบ Network อย่างเช่น IP ที่เช่าจาก Data Center โดยตรง อันนี้อีเมล์จะถูกส่งออกไปยังแน่นอน ส่วนจะถึงปลายทางหรือโดนตีกลับหรือไม่ ขึ้ออยู่กับปัจจัยอีกหลายตัว เช่น IP นี้มีความน่าเชื่อถือ หรือ ติด Black List หรือไม่
เพิ่มเติมสำหรับการ Config บน IIS
ในส่วนของ SMTP E-Mail บน IIS ให้ Config ดังรูป โดยในส่วนของ Host ใส่เป็น 127.0.0.1 หรือ localhost (ถ้าไม่ได้ให้สลับกัน)
เพิ่มเติมหรับการ Authen แบบ SMTP
Go to : แจกฟรี Script ส่งอีเมล์แบบ SMTP / POP ของ PHP ที่สามารถใช้งานได้จริง ๆ
<?php
require_once('class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsHTML(true);
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "";
$mail->Host = " 127.0.0.1";
$mail->Port = 25;
$mail->Username = " [email protected]";
$mail->Password = " password";
$mail->From = " [email protected]"; // " [email protected]";
//$mail->AddReplyTo = " [email protected]"; // Reply
$mail->FromName = "Mr.Weerachai Nukitram"; // set from Name
$mail->Subject = "Test sending mail.";
$mail->Body = "My Body & <b>My Description</b>";
$mail->AddAddress(" [email protected]", "Mr.Adisorn Boonsong"); // to Address
$mail->Send();
?>
เพิ่มเติมอีกนิด
ในกรณีที่ Authen ด้วย SMTP ผ่าน User/Password ในกรณีที่ Login ผิดเกิน 3 ครั้ง Account นั้น ๆ อาจจะถูก Auto Ban ได้
ไปที่ Advanced -> IP Ranges จะพบกับรายการที่ถูก Ban เราสามารถยกเลิกด้วยการ Remove
ในส่วน Auto-ban จะเป็นการกำหนดเงื่อนไข
อ่านเพิ่มเติม
Go to : PHP Sending Email / Send Mail
Go to : hMailServer 5.3.3 installation step by step by PlaKriM
Go to : แจกฟรี Script ส่งอีเมล์แบบ SMTP / POP ของ PHP ที่สามารถใช้งานได้จริง ๆ
|
|
|
|
|
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2015-02-10 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|