วิธีการส่งอีเมลโดยใช้ฟังก์ชั่น PHP mail()
PHP mail คืออะไร?
PHP mail เป็นฟังก์ชัน PHP ในตัวที่ใช้ส่งอีเมลจากสคริปต์ PHP
ฟังก์ชันการส่งเมล์ยอมรับพารามิเตอร์ต่อไปนี้:
- อีเมล
- หัวข้อ
- ระบุความประสงค์หรือข้อมูลเพิ่มเติม
- ที่อยู่อีเมล CC หรือ BC
- เป็นวิธีที่คุ้มค่าในการแจ้งผู้ใช้เกี่ยวกับเหตุการณ์สำคัญ
- ให้ผู้ใช้ติดต่อคุณผ่านอีเมล์โดยมีแบบฟอร์มติดต่อเราบนเว็บไซต์ที่ส่งเนื้อหาที่ให้มาทางอีเมล
- นักพัฒนาสามารถใช้เพื่อรับข้อผิดพลาดของระบบทางอีเมล
- คุณสามารถใช้มันเพื่อส่งอีเมล์ถึงสมาชิกรับจดหมายข่าวของคุณได้
- คุณสามารถใช้มันเพื่อส่งลิงค์รีเซ็ตรหัสผ่านให้กับผู้ใช้ที่ลืมรหัสผ่าน
- คุณสามารถใช้ลิงก์เปิดใช้งาน/ยืนยันทางอีเมลได้ ซึ่งมีประโยชน์เมื่อลงทะเบียนผู้ใช้และยืนยันที่อยู่อีเมลของพวกเขา
ทำไม/เมื่อไรจึงควรใช้เมล์ PHP
การส่งเมล์โดยใช้ PHP
ฟังก์ชันการส่งเมลของ PHP มีรูปแบบพื้นฐานดังต่อไปนี้
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
ที่นี่
- “$to_email_address” คือที่อยู่อีเมลของผู้รับอีเมล
- “$subject” คือหัวเรื่องอีเมล
- “$message” คือข้อความที่จะส่ง
- “[$headers]” เป็นทางเลือก โดยสามารถใช้เพื่อรวมข้อมูล เช่น CC, BCC
- CC เป็นตัวย่อของ carbon copy ใช้เมื่อคุณต้องการส่งสำเนาให้กับบุคคลที่สนใจ เช่น อีเมลร้องเรียนที่ส่งถึงบริษัทสามารถส่งเป็น CC ไปยังบอร์ดร้องเรียนได้เช่นกัน
- BCC เป็นตัวย่อของ Blind Carbon Copy ซึ่งคล้ายกับ CC ที่อยู่อีเมลที่รวมอยู่ในส่วน BCC จะไม่แสดงให้ผู้รับรายอื่นเห็น
ง่าย Mail Transmission โปรโตคอล (SMTP)
PHP mailer ใช้ Simple Mail Transmission โปรโตคอล (SMTP) ในการส่งอีเมล
บนเซิร์ฟเวอร์ที่โฮสต์ การตั้งค่า SMTP จะถูกตั้งค่าไว้แล้ว
สามารถกำหนดค่าการตั้งค่าอีเมล SMTP ได้จากไฟล์ “php.ini” ในโฟลเดอร์การติดตั้ง PHP
การกำหนดค่าการตั้งค่า SMTP บนโฮสต์ท้องถิ่นของคุณ โดยถือว่าคุณใช้ xampp บน Windows ให้ค้นหา “php.ini” ในไดเร็กทอรี “C:\xampp\php”
- เปิดโดยใช้แผ่นจดบันทึกหรือโปรแกรมแก้ไขข้อความ เราจะใช้แผ่นจดบันทึกในตัวอย่างนี้ คลิกที่เมนูแก้ไข
- คลิกที่เมนูค้นหา…
- เมนูโต้ตอบการค้นหาจะปรากฏขึ้น
- คลิกที่ปุ่มค้นหาถัดไป
- ค้นหารายการ
- [ฟังก์ชั่นเมล์]
- - เอ็กซ์แอมป์: อย่าลบคอลัมน์กึ่งถ้าคุณต้องการทำงานกับเซิร์ฟเวอร์ SMTP เช่น Mercury
- - SMTP = โลคัลโฮสต์
- - smtp_พอร์ต = 25
- ลบเครื่องหมายอัฒภาคก่อน SMTP และ smtp_port แล้วตั้งค่า SMTP เป็นของคุณ เซิร์ฟเวอร์ smtp และพอร์ตไปยังพอร์ต smtp ของคุณ การตั้งค่าของคุณควรมีลักษณะดังนี้
- SMTP = smtp.example.com
- smtp_พอร์ต = 25
- หมายเหตุ สามารถรับการตั้งค่า SMTP ได้จากผู้ให้บริการเว็บโฮสติ้งของคุณ
- หากเซิร์ฟเวอร์ต้องการการรับรองความถูกต้องให้เพิ่มบรรทัดต่อไปนี้
- auth_username = example_username@example.com
- auth_password = example_password
- บันทึกการเปลี่ยนแปลงใหม่
- เริ่มต้นใหม่ อาปาเช่ เซิร์ฟเวอร์
PHP Mail ตัวอย่าง
มาดูตัวอย่างการส่งเมลแบบง่ายๆ กัน
<?php $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply @ company . com'; mail($to_email,$subject,$message,$headers); ?>
Output:
หมายเหตุ ตัวอย่างข้างต้นใช้เพียง 4 พารามิเตอร์บังคับเท่านั้น
คุณควรแทนที่ที่อยู่อีเมลสมมติข้างต้นด้วยที่อยู่อีเมลจริง
การฆ่าเชื้อข้อมูลอินพุตของผู้ใช้อีเมล์
ตัวอย่างข้างต้นใช้ค่าที่เข้ารหัสแบบตายตัวในโค้ดต้นฉบับสำหรับที่อยู่อีเมลและรายละเอียดอื่น ๆ เพื่อความเรียบง่าย
สมมติว่าคุณต้องสร้างแบบฟอร์มติดต่อเราเพื่อให้ผู้ใช้กรอกรายละเอียดแล้วส่ง
- ผู้ใช้สามารถแทรกโค้ดลงในส่วนหัวโดยไม่ได้ตั้งใจหรือตั้งใจ ซึ่งอาจส่งผลให้ส่งเมลขยะได้
- เพื่อปกป้องระบบของคุณจากการโจมตีดังกล่าว คุณสามารถสร้างฟังก์ชันแบบกำหนดเองที่ทำการทำความสะอาดและตรวจสอบค่าต่างๆ ก่อนที่จะส่งอีเมล
มาสร้างฟังก์ชันแบบกำหนดเองที่ตรวจสอบและฆ่าเชื้อที่อยู่อีเมลโดยใช้ฟังก์ชัน filter_var ในตัว
ฟังก์ชัน Filter_var ฟังก์ชัน filter_var ใช้เพื่อฆ่าเชื้อและตรวจสอบความถูกต้องของข้อมูลที่ป้อนเข้าของผู้ใช้
มีโครงสร้างพื้นฐานดังต่อไปนี้
<?php filter_var($field, SANITIZATION TYPE); ?>
ที่นี่
- “filter_var(…)” คือฟังก์ชันการตรวจสอบและฆ่าเชื้อ
- “$field” คือค่าของฟิลด์ที่จะกรอง
- “SANITIZATION TYPE” คือประเภทของการฆ่าเชื้อที่จะดำเนินการในภาคสนาม เช่น;
- ตัวกรอง_ตรวจสอบอีเมล – คืนค่าเป็นจริงสำหรับที่อยู่อีเมลที่ถูกต้อง และคืนค่าเท็จสำหรับที่อยู่อีเมลที่ไม่ถูกต้อง
- อีเมลกรองสุขอนามัย – ลบตัวอักษรที่ผิดกฎหมายออกจากที่อยู่อีเมล info\@domain.(com) คืนค่า info@domain.com
- FILTER_SANITIZE_URL – จะลบอักขระที่ผิดกฎหมายออกจาก URL http://www.example@.comé ส่งคืน >http://www.example@.com
- FILTER_SANITIZE_STRING – จะลบแท็กออกจากค่าสตริง ฉันกล้า กลายเป็นฉันกล้า
โค้ดด้านล่างนี้ใช้ฟังก์ชันที่กำหนดเองเพื่อส่งอีเมล์อย่างปลอดภัย
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail '; $headers = 'From: noreply @ company. com'; //check if the email address is invalid $secure_check $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { //send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Output:
ปลอดภัย Mail
อีเมลอาจถูกดักจับระหว่างการส่งโดยผู้รับที่ไม่ได้ตั้งใจ
การกระทำดังกล่าวอาจทำให้เนื้อหาอีเมลถูกเปิดเผยต่อผู้รับที่ไม่ได้ตั้งใจ
Secure mail แก้ปัญหานี้ด้วยการส่งอีเมลผ่าน Hypertext Transfer Protocol Secure (HTTPS)
HTTPS เข้ารหัสข้อความก่อนที่จะส่ง
สรุป
- เทศกาล PHP ฟังก์ชัน mail() ในตัวใช้สำหรับส่งเมลจากสคริปต์ PHP
- การตรวจสอบความถูกต้องและการฆ่าเชื้อข้อมูลถือเป็นสิ่งสำคัญในการส่งเมลที่ปลอดภัย
- ฟังก์ชั่น filter_var() ในตัว PHP มอบวิธีที่ใช้งานง่ายและมีประสิทธิภาพในการดำเนินการล้างข้อมูลและการตรวจสอบความถูกต้อง