Email Class
คลาสอีเมล์ที่ตรงไปตรงมาของ CodeIgniter มีสิ่งสำคัญที่สนับสนุนดังนี้
- หลายโปรโตคอล Mail, Sendmail, และ SMTP
- หลายผู้รับ
- CC และ BCC ได้หลายคน
- อีเมล์แบบ HTML หรือข้อความธรรมดา
- แนบไฟล์ได้
- ห่อคำให้อยู่ในขนาดที่กำหนด
- ลำดับความสำคัญได้
- BCC แบบโหมดกลุ่ม, สามารถรับรายชื่ออีเมล์จำนวนมากไดโดยแยกเป็น BCC กลุ่มเล็กๆ
- เครื่องมือแก้ไขจุดบกพร่องอีเมล์
ส่งอีเมล์
ส่งอีเมล์ไม่ใช่จะเป็นเรื่องง่ายเท่านั้น แต่คุณสามารถปรับแต่งมันได้ทันทีหรือตั้งค่ามันไว้ในไฟล์ปรับแต่งก็ได้
นี้คือตัวอย่างพื้นฐาน ว่าเราจะส่งอีเมล์ได้อย่างไร ข้อสังเกตุ: ตัวอย่างนี้สมมุติว่าคุณกำลังส่งอีเมล์จากหนึ่งในตัวควบคุม
$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 |
|---|---|---|---|
| useragent | CodeIgniter | None | "user agent" |
| protocol | mail, sendmail, or smtp | โปรโตคอลที่จดหมายจะส่ง | |
| mailpath | /usr/sbin/sendmail | None | ตำแหน่งเซิร์ฟเวอร์ที่จะเอาไว้ส่งจดหมาย |
| smtp_host | No Default | None | SMTP Server Address |
| smtp_user | No Default | None | SMTP Username |
| smtp_pass | No Default | None | SMTP Password |
| smtp_port | 25 | None | SMTP Port |
| smtp_timeout | 5 | None | SMTP Timeout (โดยเวลาเป็นวินาที) |
| wordwrap | TRUE | TRUE or FALSE (boolean) | ยอมให้มีการย่อคำ |
| wrapchars | 76 | ตัวอักษรจะถูกย่อที่ตำแหน่ง | |
| mailtype | text | text or html | ประเภทของจดหมาย ถ้าคุณส่งอีเมล์แบบ HTML คุณต้องส่งมันเป็นแบบหน้าเว็บโดยสมบูรณ์ (มี html head body พร้อม) และให้แน่ใจว่าคุณไม่มีลิงค์หรือรูปภาพแบบอ้างอิงตำแหน่งสัมพันธ์ ไม่เช่นนั้นมันจะไม่ทำงาน |
| charset | utf-8 | Character set (utf-8, iso-8859-1, etc.) | |
| validate | FALSE | TRUE or FALSE (boolean) | ตรวขสอบว่าที่อยู่อีเมล์ถูกต้องหรือไม่ |
| priority | 3 | 1, 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_mode | FALSE | TRUE or FALSE (boolean) | เปิด/ปิดโหมด BCC แบบกลุ่ม |
| bcc_batch_size | 200 | None | จำนวนอีเมล์ที่จะอยู่ในแต่ละกลุ่มของ 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}