Cách gửi email bằng CodeIgnite
⚡ Tóm tắt thông minh
CodeViệc gửi email trong Igniter dựa vào thư viện Email tích hợp sẵn của framework để gửi tin nhắn thông qua SMTP hoặc máy chủ thư cục bộ. Ví dụ này tạo một tệp cấu hình email, một khung nhìn biểu mẫu liên hệ và một bộ điều khiển đọc dữ liệu nhập từ biểu mẫu và gửi tin nhắn.
Email rất quan trọng trong các ứng dụng web. Khi người dùng đăng ký, chúng ta có thể muốn gửi email cho họ để xác minh địa chỉ email và cho phép người dùng xác nhận đăng ký. Chúng ta cũng sử dụng email để đặt lại mật khẩu đã quên và gửi hóa đơn, biên lai cho khách hàng. CodeIgniter giúp chúng tôi gửi email từ ứng dụng của mình một cách cực kỳ dễ dàng với nhiều tùy chọn khác nhau.
CodeIgniter có thư viện email tích hợp sẵn mà chúng ta có thể sử dụng khi gửi email.
CodeCấu hình email Igniter
Chúng ta cần một nơi tập trung để quản lý các cài đặt email. CodeIgniter không đi kèm với tệp cấu hình dành cho email, vì vậy chúng ta sẽ phải tự tạo một tệp như vậy.
Tạo một file email.php trong thư mục application/config
Thêm mã sau vào 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 );
ĐÂY,
- 'protocol' => 'smtp', chỉ định giao thức bạn muốn sử dụng khi gửi email. Ví dụ: Gmail cài đặt SMTP hoặc cài đặt SMTP từ máy chủ của bạn
- 'smtp_host' => 'smtp.example.com', chỉ định máy chủ SMTP. Ví dụ, nếu bạn muốn sử dụng Gmail Khi đó bạn sẽ có một địa chỉ email dạng như smtp.gmail.com.
- 'smtp_port' => 465, một cổng mở trên máy chủ SMTP được chỉ định đã được cấu hình cho thư SMTP.
- 'smtp_user' => 'no-reply@example.com', địa chỉ email sẽ được sử dụng làm người gửi khi gửi email. Đây phải là địa chỉ email hợp lệ tồn tại trên máy chủ
- 'smtp_pass' => '12345!', mật khẩu của email người dùng SMTP được chỉ định.
- 'smtp_crypto' => 'ssl', chỉ định phương thức mã hóa sẽ được sử dụng, ví dụ: ssl, tls, v.v.
- 'mailtype' => 'text', thiết lập loại thư sẽ được sử dụng. Loại thư này có thể là văn bản thuần túy hoặc HTML tùy thuộc vào nhu cầu của bạn.
- 'smtp_timeout' => '4', chỉ định thời gian tính bằng giây sẽ trôi qua khi cố gắng kết nối với máy chủ trước khi ngoại lệ hết thời gian chờ được đưa ra.
- 'charset' => 'iso-8859-1', xác định bộ ký tự được sử dụng khi gửi email.
- 'wordwrap' => TRUE, nếu đặt thành TRUE thì chức năng xuống dòng tự động được bật. Nếu đặt thành FALSE thì chức năng xuống dòng tự động không được bật.
Lưu ý: để gửi email hoạt động, bạn phải cung cấp các tham số cấu hình hợp lệ. Các tham số giả sẽ không thể gửi email.
CodeChế độ xem email Igniter
Trong phần này, chúng ta sẽ tạo chế độ xem để gửi email đến người nhận.
Tạo một thư mục email mới trong ứng dụng/lượt xem
Tạo một tệp mới có tên contact.php trong thư mục application/views/email
Thêm mã sau vào 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>
ĐÂY,
- Chúng tôi có một biểu mẫu HTML cơ bản chấp nhận email, chủ đề và nội dung tin nhắn, sau đó chuyển các tham số này đến tuyến xử lý email.
CodeBộ điều khiển email Igniter
Bây giờ chúng ta hãy tạo bộ điều khiển sẽ xử lý việc gửi email.
Tạo một file mới EmailController.php trong application/controllers/EmailController.php
Thêm mã sau vào 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()); } } }
ĐÂY,
- class EmailController extends CI_Controller {…} định nghĩa bộ điều khiển email của chúng ta, kế thừa từ lớp cha. CodeBộ điều khiển đánh lửa.
- public function __construct() {…} xác định hàm tạo con gọi phương thức hàm tạo gốc.
- public function index() {…} xác định phương thức chỉ mục hiển thị biểu mẫu liên hệ
- hàm send() {…} định nghĩa phương thức gửi email
- $this->load->config('email'); tải các thiết lập cấu hình email
- $this->load->library('email'); tải thư viện email
- $from = $this->config->item('smtp_user'); lấy ID người gửi từ tệp cấu hình email mà chúng ta đã xác định.
- $to = $this->input->post('to'); nhận được giá trị từ biểu mẫu đã gửi
- `$subject = $this->input->post('subject');` thiết lập tiêu đề email từ biểu mẫu.
- $message = $this->input->post('message'); thiết lập tin nhắn email từ biểu mẫu
- $this->email->set_newline(“\r\n”); định nghĩa các ký tự dòng mới cho email
- $this->email->from($from); thiết lập địa chỉ email của người gửi
- $this->email->to($to); thiết lập địa chỉ email của người nhận
- $this->email->subject($subject); thiết lập chủ đề email
- $this->email->message($message); thiết lập tin nhắn email
- if ($this->email->send()) {…} cố gắng gửi email. Nếu email được gửi thành công, thông báo “Email của bạn đã được gửi thành công” sẽ được hiển thị, ngược lại thông tin gỡ lỗi sẽ được in ra về những gì có thể đã xảy ra sai.
Bây giờ chúng ta hãy xác định các tuyến đường email.
Tuyến đường Email
Thêm các tuyến đường sau vào application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Giờ đây chúng ta có thể tải biểu mẫu liên hệ lên trình duyệt web.
Chúng ta hãy khởi động máy chủ PHP tích hợp sẵn.
Mở cửa sổ dòng lệnh hoặc terminal và điều hướng đến thư mục gốc của ứng dụng. Trong trường hợp của tôi, thư mục gốc nằm ở ổ C:\Sites\ci-app
cd C:\Sites\ci-app
Khởi động máy chủ bằng lệnh sau:
php -S localhost:3000
Tải các mục sau URL trong trình duyệt web của bạn: http://localhost:3000/send-email
Bạn sẽ có thể thấy biểu mẫu sau
Nhập địa chỉ email người nhận, tiêu đề và nội dung email, sau đó nhấp vào Gửi email. Nếu cấu hình email của bạn được thiết lập đúng cách, bạn sẽ thấy thông báo thành công.
Cách gửi email HTML và tệp đính kèm CodeIgnite
Thư viện Email tương tự có thể gửi các tin nhắn và tệp được định dạng phong phú. Hai thay đổi nhỏ sẽ biến ví dụ văn bản thuần túy ở trên thành email HTML có tệp đính kèm.
$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'): Thông báo cho thư viện biết nội dung chứa HTML, nhờ đó các thẻ như tiêu đề và liên kết sẽ được hiển thị trong hộp thư đến của người nhận.
- gắn(): Thêm một tệp từ đường dẫn trên máy chủ vào tin nhắn; gọi hàm này một lần cho mỗi tệp trước khi gửi.
Hãy nhớ rằng email HTML vẫn cần có phiên bản văn bản thuần túy, và các tệp đính kèm lớn có thể bị từ chối bởi các máy chủ email nghiêm ngặt.


