แต่ก่อนแต่ไร เวลาเราจะเขียนโค้ดส่งอีเมล์ ก็มักจะใช้ฟังก์ชั่น mail() ซึ่งมีมาอยู่แล้วในตัวภาษา PHP แต่ข้อเสียของคำสั่ง mail() นี้ก็คือ อีเมล์ที่ส่งไปยัง hotmail , gmail , yahoo หรืออีเมล์อื่นๆที่ให้บริการสาธารณะอยู่ มักจะไปอยู่ใน junkmail และข้อเสียอีกข้อที่เห็นได้ชัดก็คือ เวลาจะทดสอบโค้ดส่งอีเมล์บนเครื่องของเรา ( คือเครื่อง localhost ) มันค่อนข้างวุ่นวาย ต้องติดตั้งอีเมล์เซิฟเวอร์ argosoft mail server หรือ hmailserver
ปัญหาสองข้อที่กล่าวมาจะหมดไปเมื่อท่านใช้ phpmailer
phpmailer เป็นคลาสที่ถูกเขียนมาเพื่อทำการส่งอีเมล์โดยเฉพาะ โดยมันเองจะส่งผ่าน smtp เหมือนตัว outlook มันจะต้องใช้แอคเค้า hotmail,gmail,yahoo ที่มีอยู่จริงของเราเป็นตัวส่ง ( สามารถส่งใน localhost ได้เลย โดยไม่ต้องติดตั้ง mailserver แต่อย่างไร )
เรื่อง phpmailer นั้นมีคณาจารย์ในอินเตอร์เน็ตเขียนไว้ค่อนข้างเยอะ ซึ่งสักครู่ผมจะนำมาเสนอท่าน แต่สิ่งหนึ่งที่ไม่ค่อยมีคนเขียนถึงคือ การเปิดใช้งาน SSL ใน appserv ( phpmailer มันต้องใช้ ) แต่ก็เป็นโชคดีของท่านที่ผมเขียนไว้ให้แล้ว
เอาละครับเรามาดูลำดับขั้นตอนในการเขียนโค้ดส่งอีเมล์ด้วย phpmailer
1. เปิดใช้งาน SSL ใน appserv ( appserv ต้องใ้ช้เวอร์ชั่น 2.5 ขึ้นไป )
2. เขียนโค้ดส่งอีเมล์ด้วย phpmailer
– PHPMailer ส่งอีเมลล์ผ่าน SMTP server
– เขียน php ส่งเมล์ด้วย PHPMailer ด้วย Gmail Account
– ส่ง เมล์จากเว็บของเราให้เข้า inbox hotmail ให้ได้ทุกครั้ง
3 บทความนี้ผมเอามาเสนอท่านเป็นทางเลือก จริงๆอ่านบทความใดบทความหนึ่ง ก็ได้
เท่านี้แหละครับ โค้ดมันไม่ได้เขียนยากและทำความเข้าใจยาก แต่อย่างไร สิ่งที่เป็นปัญหาจริงๆก็คือ เปิด SSL กันไม่เป็นและไม่มีใครเขียนสอนไว้
rong says:
12/07/2553 at 12/07/2553
ผมใช้ appserv 2.5.10 ทดสอบส่ง phpmailer ไม่ได้ มันขึ้นว่า
SMTP Error: Could not connect to SMTP host.
และผมได้ทำตามขั้นตอนทุกอย่างคือ
1.เปิด ssl
2.เขียน php ส่งเมล์ด้วย PHPMailer ด้วย Gmail Account
แต่ที่อ่านบทความดูแล้วที่ว่า แค่เปิด ssl ก็ใช้ได้ แต่กลับไม่ง่ายอย่างที่คิดไว้ครับ
*** ส่งในเครื่องตัวเองไม่ได้ ส่งในโฮสก็ไม่ได้
ไม่ทาบว่าต้องไปปรับอะไรอีกไหมครับ รบกวนด้วยครับคุณปลาทู
nario says:
20/10/2554 at 20/10/2554
ยังใช้ไม่ได้ครับ ขึ้น error
SMTP Error: Could not connect to SMTP host. Mailer Error: SMTP Error: Could not connect to SMTP host.