เข้ามาอัพเดทความรู้ซักหน่อย วันนี้พูดถึงการส่งอีเมลโดยใช้ไลบรารี่อีเมลของ CI (CodeIgniter) ก็แล้วกันครับ คลาสอีเมลของ CI สนับสนุนฟีเจอร์อะไร
- รองรับหลายโปรโตคอล (Mail, Sendmail,SMTP)
- ส่งถึงผู้รับได้ทีละหลายๆ คน
- รองรับ CC และ BCCs
- ส่งเป็น text ธรรมดาหรือเป็น html ก็ได้
- แนบไฟล์ได้
- ตัดคำ (Word Wrapping)
- กำหนดลำดับความสำคัญได้ (priorities)
- มีฟังก์ชันในการตรวจสอบ (debug)
วิธีการใช้งานก็ไม่ยากครับ เช่น
$this->load->library('email'); //config $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $this->email->initialize($config); //config $this->email->from('your@example.com', 'ชื่อผู้ส่ง'); $this->email->to('someone@example.com'); //ส่งถึงใคร $this->email->cc('another@another-example.com'); //cc ใคร $this->email->bcc('them@their-example.com'); //bcc ใคร $this->email->subject('Email Test'); //หัวข้อของอีเมล $this->email->message('Testing the email class.'); //เนื้อหาของอีเมล $this->email->send();
ในส่วน config ถ้าหากมีการเรียกใช่ฟังก์ชันส่งอีเมลบ่อยๆ ถ้าจะมา config ทุกครั้งที่เรียกฟังก์ชัน เวลาแก้ไขค่า config ก็คงจะลำบาก CI เองก็มีทางเลือกให้คือ สามารถสร้างไฟล์ที่ใช้เก็บ config นี้ไว้ เวลาแก้ไขก็แก้ที่ไฟล์ config ที่เดียวเลย เป็นการเพิ่มความสะดวกให้อีก ซึ่งเราก็จะมีไฟล์ config ชื่อ email.php และเก็บไว้ที่
application/config/email.php
โดยข้างในก็จะมีการตั้งค่า config ไว้
$config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE;
จากนั้นถ้าเพื่อนๆ อยากจะเปลี่ยนโปรโตคอลในการส่งอีเมลหรือค่าอื่นๆ ก็สามารถเข้ามาแก้ไขที่ไฟล์นี้ที่เดียวก็เรียบร้อยครับ ถ้าเราทำการสร้างไฟล์ config แล้ววิธีการใช้งานก็ง่ายขึ้นครับ คือไม่ต้องมานั่งก๊อปปี้หรือพิมพ์ค่า config ไม่ต้องเรียก initialize ด้วยครับง่ายขึ้นเยอะเลยล่ะ
$this->load->library('email'); $this->email->from('your@example.com', 'ชื่อผู้ส่ง'); $this->email->to('someone@example.com'); //ส่งถึงใคร $this->email->cc('another@another-example.com'); //cc ใคร $this->email->bcc('them@their-example.com'); //bcc ใคร $this->email->subject('Email Test'); //หัวข้อของอีเมล $this->email->message('Testing the email class.'); //เนื้อหาของอีเมล $this->email->send();
วิธีการแนบไฟล์
$this->load->library('email'); ... $this->email->attach('/path/to/photo1.jpg'); $this->email->attach('/path/to/photo2.jpg'); $this->email->attach('/path/to/photo3.jpg'); $this->email->send();
วิธี debug ดูการส่งอีเมล
$this->load->library('email'); ... $this->email->send(); echo $this->email->print_debugger()
เพื่อนที่สนใจก็สามารถเข้าไปดูรายละเอียดเพิ่มเติมได้ที่ Email Class : CodeIgniter User Guide ครับ