SMTP E-Mail Windows 7
บทความนี้อันเนื่องจากเห็นสมาชิกโพสในกระทู้บ่อย ๆ และก็ว่างพอดี เลยจัดให้ซะหน่อย มาลองดู Code ของ PHP ที่ใช้ส่งอีเมล์แบบง่าย ๆ
sendmail.php
01.
<html>
02.
<head>
03.
<title>ThaiCreate.Com PHP Sending Email</title>
04.
</head>
05.
<body>
06.
<?php
07.
$strTo
=
"member@thaicreate.com"
;
08.
$strSubject
=
"Test Send Email"
;
09.
$strHeader
=
"From: webmaster@thaicreate.com"
;
10.
$strMessage
=
"My Body & My Description"
;
11.
$flgSend
= mail(
$strTo
,
$strSubject
,
$strMessage
,
$strHeader
);
12.
if
(
$flgSend
)
13.
{
14.
echo
"Email sending."
;
15.
}
16.
else
17.
{
18.
echo
"Cannot send Mail!"
;
19.
}
20.
?>
21.
</body>
22.
</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!
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 ชื่อว่า webmaster@thaicreate.com พร้อมกับ Password (ซึ่ง Password เราจะใช้ในกรณีที่ Authen ผ่าน SMTP)
ได้ Account ของ webmaster@thaicreate.com เรียบร้อยแล้ว จากนั้นใน Code ของ PHP เพิ่มคำสั่ง
1.
ini_set
(
"SMTP"
,
"localhost"
);
2.
ini_set
(
"sendmail_from"
,
"webmaster@thaicreate.com"
);
ไม่จำเป็นจะต้องใส่ Password เพราะเราไม่ได้ส่งผ่านการ Authen แบบ SMTP
Code ทั้งหมด
01.
<html>
02.
<head>
03.
<title>ThaiCreate.Com PHP Sending Email</title>
04.
</head>
05.
<body>
06.
<?php
07.
ini_set
(
"SMTP"
,
"localhost"
);
08.
ini_set
(
"sendmail_from"
,
"webmaster@thaicreate.com"
);
09.
10.
$strTo
=
"to-thaicreate@hotmail.com"
;
11.
$strSubject
=
"Test Send Email"
;
12.
$strHeader
=
"From: webmaster@thaicreate.com"
;
13.
$strMessage
=
"My Body & My Description"
;
14.
$flgSend
= mail(
$strTo
,
$strSubject
,
$strMessage
,
$strHeader
);
15.
if
(
$flgSend
)
16.
{
17.
echo
"Email Sending."
;
18.
}
19.
else
20.
{
21.
echo
"Cannot send Mail!"
;
22.
}
23.
?>
24.
</body>
25.
</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 = "webmaster@thaicreate.com"; $mail->Password = "password"; $mail->From = "webmaster@thaicreate.com"; // "name@yourdomain.com"; //$mail->AddReplyTo = "support@thaicreate.com"; // Reply $mail->FromName = "Mr.Weerachai Nukitram"; // set from Name $mail->Subject = "Test sending mail."; $mail->Body = "My Body & <b>My Description</b>"; $mail->AddAddress("to-thaicreate@hotmail.com", "Mr.Adisorn Boonsong"); // to Address $mail->Send(); ?>
เพิ่มเติมอีกนิด
ในกรณีที่ Authen ด้วย SMTP ผ่าน User/Password ในกรณีที่ Login ผิดเกิน 3 ครั้ง Account นั้น ๆ อาจจะถูก Auto Ban ได้
ไปที่ Advanced -> IP Ranges จะพบกับรายการที่ถูก Ban เราสามารถยกเลิกด้วยการ Remove
ในส่วน Auto-ban จะเป็นการกำหนดเงื่อนไข
ไม่มีความคิดเห็น:
แสดงความคิดเห็น