วิธีการส่งอีเมลโดยใช้ Codeเครื่องทำให้ลุกไหม้
⚡ สรุปอย่างชาญฉลาด
Codeการส่งอีเมลด้วย Igniter อาศัยไลบรารีอีเมลในตัวของเฟรมเวิร์กเพื่อส่งข้อความผ่าน SMTP หรือเซิร์ฟเวอร์อีเมลในเครื่อง ตัวอย่างนี้สร้างไฟล์การกำหนดค่าอีเมล มุมมองแบบฟอร์มติดต่อ และคอนโทรลเลอร์ที่อ่านข้อมูลจากแบบฟอร์มและส่งข้อความออกไป

อีเมลมีความสำคัญมากในแอปพลิเคชันบนเว็บ เมื่อผู้ใช้ลงทะเบียน เราอาจต้องการส่งอีเมลไปเพื่อยืนยันที่อยู่อีเมลและอนุญาตให้ผู้ใช้ยืนยันการสมัครสมาชิก นอกจากนี้เรายังใช้อีเมลในการรีเซ็ตรหัสผ่านที่ลืม และส่งใบแจ้งหนี้และใบเสร็จรับเงินให้กับลูกค้า CodeIgniter ช่วยให้เราส่งอีเมลจากแอปพลิเคชันของเราได้อย่างง่ายดาย โดยใช้ตัวเลือกที่หลากหลาย
CodeIgniter มีคลังอีเมลในตัวที่เราสามารถนำมาใช้ในการส่งอีเมลได้
Codeการกำหนดค่าอีเมล Igniter
เราจำเป็นต้องมีศูนย์กลางในการจัดการการตั้งค่าอีเมล CodeIgniter ไม่มีไฟล์การตั้งค่าสำหรับอีเมลมาให้ ดังนั้นเราจะต้องสร้างไฟล์ดังกล่าวขึ้นมาเอง
สร้างไฟล์ email.php ในไดเร็กทอรี application/config
เพิ่มโค้ดต่อไปนี้ลงใน email.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); $config = array( 'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp' 'smtp_host' => 'smtp.example.com', 'smtp_port' => 465, 'smtp_user' => 'no-reply@example.com', 'smtp_pass' => '12345!', 'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example 'mailtype' => 'text', //plaintext 'text' mails or 'html' 'smtp_timeout' => '4', //in seconds 'charset' => 'iso-8859-1', 'wordwrap' => TRUE );
ที่นี่
- 'protocol' => 'smtp' ระบุโปรโตคอลที่คุณต้องการใช้เมื่อส่งอีเมล ตัวอย่างเช่น Gmail การตั้งค่า SMTP หรือการตั้งค่า SMTP จากโฮสต์ของคุณ
- 'smtp_host' => 'smtp.example.com' ระบุโฮสต์ SMTP ตัวอย่างเช่น หากคุณต้องการใช้ Gmail แล้วคุณก็จะมีอีเมลประมาณว่า smtp.gmail.com
- 'smtp_port' => 465 พอร์ตที่เปิดอยู่บนโฮสต์ SMTP ที่ระบุ ซึ่งได้รับการกำหนดค่าสำหรับการส่งอีเมลผ่าน SMTP
- 'smtp_user' => 'no-reply@example.com' ที่อยู่อีเมลที่จะใช้เป็นผู้ส่งเมื่อส่งอีเมล ควรเป็นที่อยู่อีเมลที่ถูกต้องซึ่งมีอยู่บนเซิร์ฟเวอร์
- 'smtp_pass' => '12345!', รหัสผ่านสำหรับอีเมลผู้ใช้ SMTP ที่ระบุ
- 'smtp_crypto' => 'ssl' ระบุวิธีการเข้ารหัสที่จะใช้ เช่น ssl, tls เป็นต้น
- 'mailtype' => 'text' กำหนดประเภทอีเมลที่จะใช้ ซึ่งอาจเป็นข้อความธรรมดาหรือ HTML ก็ได้ ขึ้นอยู่กับความต้องการของคุณ
- 'smtp_timeout' => '4' ระบุเวลาเป็นวินาทีที่ควรผ่านไปเมื่อพยายามเชื่อมต่อกับโฮสต์ก่อนที่จะส่งข้อยกเว้นการหมดเวลา
- 'charset' => 'iso-8859-1' กำหนดชุดอักขระที่จะใช้เมื่อส่งอีเมล
- 'wordwrap' => TRUE ถ้าตั้งค่าเป็น TRUE จะเปิดใช้งานการตัดคำ ถ้าตั้งค่าเป็น FALSE จะปิดใช้งานการตัดคำ
หมายเหตุ: หากต้องการส่งอีเมลได้ คุณควรระบุพารามิเตอร์การกำหนดค่าที่ถูกต้อง พารามิเตอร์เสมือนจะไม่สามารถส่งอีเมลได้
Codeดูอีเมล Igniter
ในส่วนนี้เราจะสร้างมุมมองที่จะส่งอีเมลไปยังผู้รับ
สร้างไดเร็กทอรีอีเมลใหม่ในแอปพลิเคชัน/มุมมอง
สร้างไฟล์ใหม่ชื่อ contact.php ในโฟลเดอร์ application/views/email
เพิ่มโค้ดต่อไปนี้ลงในไฟล์ application/views/email/contact.php
<!DOCTYPE html> <html> <head> <title>CodeIgniter Send Email</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <h3>Use the form below to send email</h3> <form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data"> <input type="email" id="to" name="to" placeholder="Receiver Email"> <br><br> <input type="text" id="subject" name="subject" placeholder="Subject"> <br><br> <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea> <br><br> <input type="submit" value="Send Email" /> </form> </div> </body> </html>
ที่นี่
- เรามีแบบฟอร์ม HTML พื้นฐานที่รับอีเมล หัวข้อ และข้อความ จากนั้นส่งพารามิเตอร์ไปยังเส้นทางการส่งอีเมล
Codeตัวควบคุมอีเมล Igniter
ต่อไปเราจะสร้างคอนโทรลเลอร์ที่จะทำหน้าที่ส่งอีเมล
สร้างไฟล์ใหม่ EmailController.php ใน application/controllers/EmailController.php
เพิ่มโค้ดต่อไปนี้ลงใน EmailController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class EmailController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); } public function index() { $this->load->view('email/contact'); } function send() { $this->load->config('email'); $this->load->library('email'); $from = $this->config->item('smtp_user'); $to = $this->input->post('to'); $subject = $this->input->post('subject'); $message = $this->input->post('message'); $this->email->set_newline("\r\n"); $this->email->from($from); $this->email->to($to); $this->email->subject($subject); $this->email->message($message); if ($this->email->send()) { echo 'Your Email has successfully been sent.'; } else { show_error($this->email->print_debugger()); } } }
ที่นี่
- คลาส EmailController extends CI_Controller {…} กำหนดตัวควบคุมอีเมลของเราซึ่งสืบทอดมาจากคลาสแม่ Codeตัวควบคุมการจุดระเบิด
- ฟังก์ชั่นสาธารณะ __construct() {…} กำหนดตัวสร้างลูกที่เรียกเมธอดตัวสร้างพาเรนต์
- ฟังก์ชั่นสาธารณะ index() {…} กำหนดวิธีการทำดัชนีที่แสดงแบบฟอร์มการติดต่อ
- ฟังก์ชัน send() {…} กำหนดวิธีการที่ส่งอีเมล
- $this->load->config('email'); โหลดการตั้งค่าคอนฟิกูเรชันอีเมล
- $this->load->library('email'); โหลดไลบรารีอีเมล
- $from = $this->config->item('smtp_user'); รับ ID ผู้ส่งจากไฟล์กำหนดค่าอีเมลที่เราได้กำหนดไว้
- $to = $this->input->post('to'); รับค่า to จากแบบฟอร์มที่ส่งมา
- $subject = $this->input->post('subject'); กำหนดหัวเรื่องอีเมลจากแบบฟอร์ม
- $message = $this->input->post('message'); ตั้งค่าข้อความอีเมล์จากแบบฟอร์ม
- $this->email->set_newline(“\r\n”); กำหนดอักขระบรรทัดใหม่สำหรับอีเมล
- $this->email->from($from); กำหนดที่อยู่อีเมลของผู้ส่ง
- $this->email->to($to); กำหนดที่อยู่อีเมลของผู้รับ
- $this->email->subject($subject); กำหนดหัวเรื่องอีเมล
- $this->email->message($message); ตั้งค่าข้อความอีเมล์
- หาก ($this->email->send()) {…} จะพยายามส่งอีเมล หากส่งอีเมลสำเร็จ จะแสดงข้อความ “อีเมลของคุณถูกส่งสำเร็จแล้ว” มิเช่นนั้น จะแสดงข้อมูลการดีบักเกี่ยวกับสิ่งที่อาจผิดพลาด
ต่อไปนี้เราจะกำหนดเส้นทางการส่งอีเมลกัน
เส้นทางอีเมล์
เพิ่มเส้นทางต่อไปนี้ไปที่ application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
ขณะนี้เราสามารถโหลดแบบฟอร์มติดต่อในเว็บเบราว์เซอร์ได้แล้ว
มาเริ่มใช้งานเซิร์ฟเวอร์ PHP ในตัวกันเลย
เปิดเทอร์มินัลหรือบรรทัดคำสั่ง แล้วไปที่ไดเร็กทอรีหลักของแอปพลิเคชันของคุณ ในกรณีของฉัน ไดเร็กทอรีหลักอยู่ที่ไดรฟ์ C:\Sites\ci-app
cd C:\Sites\ci-app
เริ่มเซิร์ฟเวอร์โดยใช้คำสั่งต่อไปนี้
php -S localhost:3000
โหลดข้อมูลต่อไปนี้ URL ในเว็บเบราว์เซอร์ของคุณ: http://localhost:3000/send-email
คุณควรจะสามารถเห็นแบบฟอร์มต่อไปนี้ได้
ป้อนอีเมลผู้รับ หัวข้อ และข้อความอีเมล จากนั้นคลิก ส่งอีเมล หากการตั้งค่าอีเมลของคุณถูกต้อง คุณจะเห็นข้อความแสดงความสำเร็จ
วิธีการส่งอีเมลและไฟล์แนบในรูปแบบ HTML Codeเครื่องทำให้ลุกไหม้
ไลบรารีอีเมลเดียวกันนี้สามารถส่งข้อความและไฟล์ที่มีการจัดรูปแบบอย่างสวยงามได้ การเปลี่ยนแปลงเล็กน้อยเพียงสองอย่างจะเปลี่ยนตัวอย่างข้อความธรรมดาข้างต้นให้กลายเป็นอีเมล HTML พร้อมไฟล์แนบ
$this->email->set_mailtype('html'); $this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>'); $this->email->attach('/path/to/report.pdf');
- set_mailtype('html'): แจ้งให้ไลบรารีทราบว่าเนื้อหาประกอบด้วย HTML ดังนั้นแท็กต่างๆ เช่น หัวข้อและลิงก์จึงแสดงผลในกล่องจดหมายของผู้รับได้
- แนบ(): เพิ่มไฟล์จากพาธบนเซิร์ฟเวอร์ลงในข้อความ เรียกใช้ฟังก์ชันนี้หนึ่งครั้งสำหรับแต่ละไฟล์ก่อนส่ง (send())
โปรดจำไว้ว่าอีเมล HTML ควรมีทางเลือกเป็นข้อความธรรมดา และไฟล์แนบขนาดใหญ่อาจถูกปฏิเสธโดยเซิร์ฟเวอร์อีเมลที่มีกฎเข้มงวด

