ตรวจสอบอีเมล์ด้วย PHP

เมื่อ 2 สัปดาห์ก่อน ได้เข้าไปเดินเล่น ที่บล็อกของคุณ icez และไปเจอที่ได้เขียนไว้เกี่ยวกับ PHP Email Validation เห็นแล้วก็น่าสนใจดีครับ วันนี้จึงจะนำมาโมฯ ต่อ จากของผมที่ใช้อยู่เดิมๆ

เดิมๆ นั้น ผมจะใช้การตรวจสอบอีเมล์ ดังตัวอย่างด้านล่างนี้ครับ


ซึ่งผมก็ใช้ฟังก์ชั่นด้านบน ในการตรวจสอบอีเมล์ตลอด แต่หลังจากที่ได้ไปเห็นในบล็อกคุณ icez ดังกล่าว และก็ได้ตามไปดูถึงแหล่ง (ที่คุณ icez เจอมาอีกที) ก็เลยศึกษา(คร่าวๆ) ดู แล้วเป็นที่น้าสนใจมากครับ โดยต้นฉบับเขียนฟังก์ชั่นไว้ดังนี้

เป็นอย่างไรครับ เริ่มน่าสนใจแล้วสินะครับ แต่เนื่องจาก พอมารันดู ก็อาจพบข้อความผิดพลาดคือ

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: fsockopen() [function.fsockopen]: unable to connect to :25 (Unknown error)

ข้อความนี้ผมเจอกับตัว และก็มีคนโพสไว้ที่บล็อกคุณ icez ด้วยเช่นกัน? แต่จากข้อสันนิษฐานของผมคือ ถ้าเรากรอกอีเมล์ ที่ไม่มีโดเมนอยู่จริง มันจะขึ้นเตือนดังกล่าว เช่น heem@e.com

ดังนั้นเพื่อแก้ปัญหา(เฉพาะหน้า) ผมก็เลยจัดแจงใส่ @ ไว้หน้า fsockopen (บรรทัด 16) เพื่อไม่ให้แจ้งข้อผิดพลาด หากเกิดกรณีดังกล่าว และผมก็ได้เปลี่ยนการเช็ครูปแบบอีเมล์ใหม่ (บรรทัดที่ 2) ด้วยเช่นกันครับ (เพราะรู้สึกว่าเขาตก เครื่องหมาย ! ไปหรือไม่?) แต่อย่างไรก็ดี ผมก็ได้เอาการเช็ครูปแบบอีเมล์ จากฟังก์ชั่นเดิมของผมมาแทน ที่

และแล้ว หลังจากโมฯ ก็ได้มาเป็นแบบนี้ครับ

ผมลองเช็คดู ยังไม่พบปัญหานะครับ ท่านสามารถเนาไปใช้หรือประยุกต์ต่อได่นะครับ 😀

💡 หมายเหตุ หากรันบน Windows จะพบปัญหาไม่มีฟังชั่นgetmxrr นะครับ เนื่องจาก ฟังก์ชั่น getmxrr สามารถใช้ได้เฉพาะ Linux เท่านั้นนะครับ

4 Replies to “ตรวจสอบอีเมล์ด้วย PHP”

  1. patiphan :แล้ว $MXHost คืออะไรคับ

    $MXHost (array)

    จะเป็นรายการ MX Record ที่พบจาก $Domain ที่เราค้นหาครับ

  2. รบกวนแนะนำการเอาไปใช้งานด้วยครับ พอดีผมเจอปัญหาเรื่องมีคนส่งเมล์ที่ไม่ใช้รูปแบบเมล์มาที่ผมนะครับเป็นฟอร์มลงทะเบียนจองห้องพัก ถ้าผมจะนำไปใช้ ผมจะวางตรงส่วนไหนครับ

    ขอบคุณครับ

  3. @jong
    นำอีเมล์มาตรวจสอบกับฟังก์ชั่น ก่อนที่จะนำข้อมูลที่ได้นั้นไปใช้หรือบันทึกลงฐานข้อมูลนะครับ

    กล่าวคือ พอผู้ใช้ submit ฟอร์ม ก็ให้นำอีเมล์ไปตรวจสอบกับฟังก์ชั่นก่อนนะครับ

    เช่น

    เป็นต้นครับ

Leave a Reply

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

*