Codeigniter: การส่งเมลโดยใช้ email library

เข้ามาอัพเดทความรู้ซักหน่อย วันนี้พูดถึงการส่งอีเมลโดยใช้ไลบรารี่อีเมลของ CI (CodeIgniter) ก็แล้วกันครับ คลาสอีเมลของ CI สนับสนุนฟีเจอร์อะไร

  1. รองรับหลายโปรโตคอล (Mail, Sendmail,SMTP)
  2. ส่งถึงผู้รับได้ทีละหลายๆ คน
  3. รองรับ CC และ BCCs
  4. ส่งเป็น text ธรรมดาหรือเป็น html ก็ได้
  5. แนบไฟล์ได้
  6. ตัดคำ (Word Wrapping)
  7. กำหนดลำดับความสำคัญได้ (priorities)
  8. มีฟังก์ชันในการตรวจสอบ (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 ครับ