คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


Email Class

คลาสอีเมล์ที่ตรงไปตรงมาของ CodeIgniter มีสิ่งสำคัญที่สนับสนุนดังนี้

ส่งอีเมล์

ส่งอีเมล์ไม่ใช่จะเป็นเรื่องง่ายเท่านั้น แต่คุณสามารถปรับแต่งมันได้ทันทีหรือตั้งค่ามันไว้ในไฟล์ปรับแต่งก็ได้

นี้คือตัวอย่างพื้นฐาน ว่าเราจะส่งอีเมล์ได้อย่างไร ข้อสังเกตุ: ตัวอย่างนี้สมมุติว่าคุณกำลังส่งอีเมล์จากหนึ่งในตัวควบคุม

$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

echo $this->email->print_debugger();

ปรับแต่งอีเมล์ตามใจชอบ

มีสิ่งที่สามารถปรับแต่งกว่า 17 อย่างที่จะปรับแจ่งข้อความอีเมล์ที่คุณจะส่ง คุณสามารถตั้งค่ามันเองอย่างตัวอย่างข้างล่างนี้ หรือทำให้มันโหลดอย่างอัตโนมัติโดยการปรับแต่งที่ไฟล์ปรับแต่งซึ่งมีอธิบายอยู่ด้านล่าง

การตั้งค่าปรับแต่งสามารถถูกส่งเป็นอาเรย์ของการปรับแต่งไปได้ผ่านฟังก์ชัน initialize นี้คือตัวอย่างวิธีตั้งค่าปรับแต่ง

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

ข้อสังเกตุ: ค่าปรับแต่งส่วนใหญ่มีค่าเลือกอัตโนมัติ ที่จะถูกใช้ถ้าคุณไม่ได้ตั้งค่ามัน

ปรังแต่งตั้งค่าอีเมล์ในไฟล์ปรับแต่ง

ถ้าคุณไม่พอใจที่จะตั้งค่าแบบด้านบน คุณสามารถนำการปรับแต่งนั้นใส่ลงไปในไฟล์ปรับแต่งแทนได้ โดยวิธีง่ายๆแค่เพียงสร้างไฟล์ชื่อ email.php และเพิ่มอาเรย์ $config ไปในไฟล์นั้น จากนั้นบันทึกไฟล์นั้นไปที่ config/email.php และมันจะถูกใช้อย่างอัตโนมัติ โดยคราวนี้คุณไม่จำเป็นต้องใช้ฟังก์ชัน $this->email->initialize() ถ้าคุณบันทึกการปรับแต่งไว้ในไฟล์ปรับแต่งแล้ว

ค่าปรับแต่งอีเมล์

รายการต่อไปนี้คือค่าปรับแต่งเวลาจะส่งอีเมล์

Preference Default Value Options Description
useragentCodeIgniterNone "user agent"
protocolmailmail, sendmail, or smtp โปรโตคอลที่จดหมายจะส่ง
mailpath/usr/sbin/sendmailNone ตำแหน่งเซิร์ฟเวอร์ที่จะเอาไว้ส่งจดหมาย
smtp_hostNo DefaultNone SMTP Server Address
smtp_userNo DefaultNone SMTP Username
smtp_passNo DefaultNone SMTP Password
smtp_port25None SMTP Port
smtp_timeout5None SMTP Timeout (โดยเวลาเป็นวินาที)
wordwrapTRUETRUE or FALSE (boolean) ยอมให้มีการย่อคำ
wrapchars76 ตัวอักษรจะถูกย่อที่ตำแหน่ง
mailtypetexttext or html ประเภทของจดหมาย ถ้าคุณส่งอีเมล์แบบ HTML คุณต้องส่งมันเป็นแบบหน้าเว็บโดยสมบูรณ์ (มี html head body พร้อม) และให้แน่ใจว่าคุณไม่มีลิงค์หรือรูปภาพแบบอ้างอิงตำแหน่งสัมพันธ์ ไม่เช่นนั้นมันจะไม่ทำงาน
charsetutf-8 Character set (utf-8, iso-8859-1, etc.)
validateFALSETRUE or FALSE (boolean) ตรวขสอบว่าที่อยู่อีเมล์ถูกต้องหรือไม่
priority31, 2, 3, 4, 5 ความสำคัญของอีมเล์ 1 = สูงสุด 5 = ตำสุด 3 = ปกติ
crlf \n "\r\n" or "\n" or "\r" ตัวอักษรขึ้นบรรทัดใหม่ (ใช้ "\r\n" เพื่อเชื่อฟังตามมาตรฐาน RFC 822)
newline\n "\r\n" or "\n" or "\r" ตัวอักษรขึ้นบรรทัดใหม่ (ใช้ "\r\n" เพื่อเชื่อฟังตามมาตรฐาน RFC 822)
bcc_batch_modeFALSETRUE or FALSE (boolean) เปิด/ปิดโหมด BCC แบบกลุ่ม
bcc_batch_size200None จำนวนอีเมล์ที่จะอยู่ในแต่ละกลุ่มของ BCC

เอกสารอ้างอิงฟังก์ชันอีเมล์

$this->email->from()

ตั้งชื่อและที่อยู่อีเมล์ของคนที่กำลังจะส่งอีเมล์

$this->email->from('you@example.com', 'Your Name');

$this->email->reply_to()

ตั้งค่าที่อยู่ตอบกลับ ถ้าไม่มีข้อมูลคนที่ตอบกลับจะใช้ฟังก์ชัน "from" แทนตัวอย่างเช่น

$this->email->reply_to('you@example.com', 'Your Name');

$this->email->to()

ตั้งค่าที่อยู่อีเมล์หรือหลายอีเมล์ของผู้รับ โดยสามารถเป็นอีเมล์เดียวหรือรายชื่อกลุ่มที่ถูกคั่นด้วย comma (,) หรืออาเรย์

$this->email->to('someone@example.com'); $this->email->to('one@example.com, two@example.com, three@example.com'); $list = array('one@example.com', 'two@example.com', 'three@example.com');

$this->email->to($list);

$this->email->cc()

ตั้งค่าที่อยู่อีเมล์ CC เหมือนอย่างฟังก์ชัน "to" สามารถเป็นอีเมล์เดียวหรือรายชื่อกลุ่มที่ถูกคั่นด้วย comma (,) หรืออาเรย

$this->email->bcc()

ตั้งค่าที่อยู่อีเมล์ BCC เหมือนอย่างฟังก์ชัน "to" สามารถเป็นอีเมล์เดียวหรือรายชื่อกลุ่มที่ถูกคั่นด้วย comma (,) หรืออาเรย

$this->email->subject()

ตั้งค่าหัวข้ออีเมล์

$this->email->subject('This is my subject');

$this->email->message()

ตั้งค่าข้อความอีเมล์

$this->email->message('This is my message');

$this->email->set_alt_message()

ตั้งค่าอีกทางเลือกของข้อความอีเมล์

$this->email->set_alt_message('This is the alternative message');

นี้เป็นข้อความทางเลือกถ้าคุณส่งอีเมล์แบบ HTML มันยอมคุณกำหนดทางเลือกของข้อความที่ไม่มีการจัดรูปแบบของ HTML ซึ่งจะถูกเพิ่มเข้าไปในสตริงส่วนหัวสำหรับคนที่ไม่ยอมรับอีเมล์แบบ HTML ถ้าคุณไม่ตั้งค่าข้อความด้วยตัวคุณเอง CodeIgniter จะคัดลอกข้อความ HTML ของคุณและถอดแท็กออกทั้งหมด

$this->email->clear()

เริ่มต้นค่าต่างๆของอีเมล์ให้อยู่ในสถานะว่าง เจตนาของฟังก์ชั้นนี้คือสำหรับใช้ถ้าคุณสงอีเมล์โดยอยู่ลูป ซึ่งอนุญาตให้คุณล้างข้อมูลระหว่างวนลูปได้

foreach ($list as $name => $address)
{
    $this->email->clear();

    $this->email->to($address);
    $this->email->from('your@example.com');
    $this->email->subject('Here is your info '.$name);
    $this->email->message('Hi '.$name.' Here is the info you requested.');
    $this->email->send();
}

ถ้าคุณตั้งค่าพารามิเตอร์เป็น TRUE ไฟล์แนบทั้งหมดก็จะถูกล้างออกหมดเช่นกัน

$this->email->clear(TRUE);

$this->email->send()

ฟังก์ชันส่งเมล์ คืนค่าเป็นตรรกะ TRUE หรือ FALSE ขึ้นอยู่กับการส่งสำเร็จหรือผิดพลาด สามารถใช้มันอยู่ในเงื่อนไขได้

if ( ! $this->email->send())
{
    // ใส่ข้อผิดพลาด
}

$this->email->attach()

ยอมให้คุณใส่ไฟล์แนบ โดยใส่ตำแหน่ง/ชื่อไฟลในพารามิเตอร์แรก ข้อสังเกตุ: ให้ใช้ตำแหน่งไฟล์, ไม่ใช่ URL สำหรับการใส่หลายไฟล์แนบให้ใช้ฟังก์ชันนี้หลายครั้ง ตัวอย่างเช่น

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

คืนค่าเป็นสตริงที่มีข้อความจากฝั่งเซิร์ฟเวอร์ ทั้งหัวอีเมล์และข้อความอีเมล์ เป็นประโยชน์สำหรับทำการแก้ไขข้อผิดพลาด

ยกเลิกการย่อคำ

ถ้าคุณใช้การย่อคำ (ซึ่งถูกแนะนำให้ทำตามมาตรฐาน RFC 822) และคุณมีลิงค์ที่ยาวมากในอีเมล์ ซึ่งมันจะถูกย่อด้วยเหมือนกัน ซึ่งทำให้ไม่สามารถถูกคลิกได้จากคนที่รับอีเมล์ CodeIgniter ยังยอมให้คุณยกเลิกการย่อคำได้ในส่วนของข้อความอย่างตัวอย่างนี้

The text of your email that
gets wrapped normally.

{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}

More text that will be
wrapped normally.

ใส่ข้อความที่คุณไม่ต้องการให้ถูกย่อคำไประหว่าง {unwrap} {/unwrap}