Cách gửi Email bằng hàm PHP mail()

Thư PHP là gì?

Thư PHP là hàm tích hợp sẵn của PHP được sử dụng để gửi email từ các tập lệnh PHP.

Hàm mail chấp nhận các tham số sau:

  • Địa chỉ email
  • Tiêu Đề
  • Tin nhắn
  • Địa chỉ email CC hoặc BC

  • Đó là một cách tiết kiệm chi phí để thông báo cho người dùng về các sự kiện quan trọng.
  • Cho phép người dùng liên hệ với bạn qua email bằng cách cung cấp biểu mẫu liên hệ trên trang web để gửi email có chứa nội dung được cung cấp.
  • Các nhà phát triển có thể sử dụng nó để nhận lỗi hệ thống qua email
  • Bạn có thể sử dụng nó để gửi email cho những người đăng ký nhận bản tin của bạn.
  • Bạn có thể sử dụng nó để gửi liên kết đặt lại mật khẩu cho người dùng quên mật khẩu
  • Bạn có thể sử dụng nó để gửi email liên kết kích hoạt/xác nhận. Điều này hữu ích khi đăng ký người dùng và xác minh địa chỉ email của họ

Tại sao/Khi nào nên sử dụng PHP thư

Gửi thư bằng PHP

Hàm mail PHP có cú pháp cơ bản sau

<?php
mail($to_email_address,$subject,$message,[$headers],[$parameters]);
?>

ĐÂY,

  • “$to_email_address” là địa chỉ email của người nhận thư
  • “$subject” là tiêu đề email
  • “$message” là tin nhắn được gửi đi.
  • “[$headers]” là tùy chọn, nó có thể được sử dụng để bao gồm các thông tin như CC, BCC

    • CC là từ viết tắt của carbon copy. Nó được sử dụng khi bạn muốn gửi một bản sao cho người quan tâm, tức là email khiếu nại gửi đến một công ty cũng có thể được gửi dưới dạng CC đến ban khiếu nại.
    • BCC là từ viết tắt của blind carbon copy. Tương tự như CC. Các địa chỉ email được bao gồm trong phần BCC sẽ không được hiển thị cho những người nhận khác.

Đơn giản Mail Transmission Giao thức (SMTP)

PHP mailer sử dụng Simple Mail Transmission Giao thức (SMTP) để gửi thư.

Trên máy chủ được lưu trữ, cài đặt SMTP đã được đặt.

Cài đặt thư SMTP có thể được cấu hình từ tệp “php.ini” trong thư mục cài đặt PHP.

Cấu hình cài đặt SMTP trên máy chủ cục bộ của bạn Giả sử bạn đang sử dụng xampp trên Windows, hãy tìm “php.ini” trong thư mục “C:\xampp\php”.

  • Mở nó bằng notepad hoặc bất kỳ trình soạn thảo văn bản nào. Chúng tôi sẽ sử dụng notepad trong ví dụ này. Bấm vào menu chỉnh sửa

Đơn giản Mail Transmission Nghị định thư

  • Nhấp vào menu Tìm…

Đơn giản Mail Transmission Nghị định thư

  • Menu hộp thoại tìm sẽ xuất hiện

Đơn giản Mail Transmission Nghị định thư

  • Nhấp vào nút Tìm tiếp theo

Đơn giản Mail Transmission Nghị định thư

  • Xác định vị trí các mục

    • [chức năng thư]
    • ; XAMPP: Đừng xóa cột bán nếu bạn muốn làm việc với Máy chủ SMTP như Mercury
    • ; SMTP = máy chủ cục bộ
    • ; smtp_port = 25
    • Xóa dấu chấm phẩy trước SMTP và smtp_port và đặt SMTP thành máy chủ SMTP và cổng tới cổng smtp của bạn. Cài đặt của bạn sẽ trông như sau

      • SMTP = smtp.example.com
      • smtp_port = 25
      • Chú thích cài đặt SMTP có thể được lấy từ nhà cung cấp dịch vụ lưu trữ web của bạn.
      • Nếu máy chủ yêu cầu xác thực, hãy thêm các dòng sau.

        • auth_username = example_username@example.com
        • auth_password = ví dụ_password
        • Lưu những thay đổi mới.
        • Khởi động lại Apache máy chủ.

PHP Mail Ví dụ

Bây giờ chúng ta hãy xem một ví dụ gửi một email đơn giản.

<?php     
$to_email = 'name @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
$headers = 'From: noreply @ company . com';
mail($to_email,$subject,$message,$headers);
?>

Đầu ra:

Đơn giản Mail Transmission Nghị định thư

Lưu ý: ví dụ trên chỉ lấy 4 tham số bắt buộc.

Bạn nên thay thế địa chỉ email giả định ở trên bằng địa chỉ email thật.

Vệ sinh thông tin đầu vào của người dùng email

Ví dụ trên sử dụng các giá trị được mã hóa cứng trong mã nguồn cho địa chỉ email và các chi tiết khác để đơn giản hóa.

Giả sử bạn phải tạo một biểu mẫu liên hệ để người dùng điền thông tin và sau đó gửi.

  • Người dùng có thể vô tình hoặc cố ý chèn mã vào tiêu đề, điều này có thể dẫn đến việc gửi thư rác
  • Để bảo vệ hệ thống của bạn khỏi những cuộc tấn công như vậy, bạn có thể tạo một hàm tùy chỉnh để khử trùng và xác thực các giá trị trước khi gửi thư.

Hãy tạo một hàm tùy chỉnh để xác thực và khử trùng địa chỉ email bằng hàm tích hợp filter_var.

Hàm Filter_var Hàm filter_var được sử dụng để lọc và xác thực dữ liệu đầu vào của người dùng.

Nó có cú pháp cơ bản như sau.

<?php
filter_var($field, SANITIZATION TYPE);
?>

ĐÂY,

  • “filter_var(…)” là chức năng xác thực và dọn dẹp
  • “$field” là giá trị của trường cần lọc.
  • “LOẠI VỆ SINH” là loại vệ sinh được thực hiện trên hiện trường như;

    • BỘ LỌC_XÁC_ĐỊNH_EMAIL – trả về true cho địa chỉ email hợp lệ và false cho địa chỉ email không hợp lệ.
    • BỘ LỌC_VỆ SINH_EMAIL – xóa các ký tự không hợp lệ khỏi địa chỉ email. info\@domain.(com) trả về info@domain.com.
    • FILTER_SANITIZE_URL – nó loại bỏ các ký tự không hợp lệ khỏi URL. http://www.example@.comé trả về >http://www.example@.com
    • FILTER_SANITIZE_STRING – nó xóa các thẻ khỏi giá trị chuỗi. tôi táo bạo trở thành tôi táo bạo.

Đoạn mã bên dưới sử dụng một hàm tùy chỉnh để gửi thư an toàn.

<?php 
function sanitize_my_email($field) {
    $field = filter_var($field, FILTER_SANITIZE_EMAIL);
    if (filter_var($field, FILTER_VALIDATE_EMAIL)) {
        return true;
    } else {
        return false;
    }
}
$to_email = 'name @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail ';
$headers = 'From: noreply @ company. com';
//check if the email address is invalid $secure_check
$secure_check = sanitize_my_email($to_email);
if ($secure_check == false) {
    echo "Invalid input";
} else { //send email 
    mail($to_email, $subject, $message, $headers);
    echo "This email is sent using PHP Mail";
}
?>

Đầu ra:

Vệ sinh thông tin đầu vào của người dùng email

Bảo mật Mail

Email có thể bị chặn trong quá trình truyền tải bởi người nhận không mong muốn.

Điều này có thể tiết lộ nội dung email cho những người nhận không mong muốn.

Thư bảo mật giải quyết vấn đề này bằng cách truyền email qua Giao thức truyền siêu văn bản bảo mật (HTTPS).

HTTPS mã hóa tin nhắn trước khi gửi chúng.

Tổng kết

  • PHP hàm tích hợp mail() được sử dụng để gửi thư từ các tập lệnh PHP
  • Kiểm tra xác thực và vệ sinh dữ liệu là điều cần thiết để gửi thư an toàn
  • Hàm tích hợp PHP filter_var() cung cấp một cách dễ sử dụng và hiệu quả để thực hiện việc vệ sinh và xác thực dữ liệu