Sử dụng hàm mail() để gửi mail trong Lập trình web PHP

Ngày đăng: 19/06/2019   -    Cập nhật: 07/12/2020

1. PHP mail() là gì?


PHP mail() là một hàm PHP được tích hợp sẵn sử dụng để gửi email. Bài viết này sẽ hướng dẫn bạn cấu hình SMTP, gửi demo email và hướng dẫn làm sạch, xác thực dữ liệu trước khi gửi email.


Hướng dẫn gửi Email trong PHP bằng hàm mail()

Hướng dẫn gửi Email trong PHP bằng hàm mail()

 

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


  • Email address
  • Subject
  • Message
  • CC or BC email addresses
 

 

Trong lập trình web, chúng ta thường thường sử dụng hàm mail() để làm gì?


 
  • Đây 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ệ với chúng ta trên trang web
  • Các Lập trình viê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 người đăng ký 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 nếu họ 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. Thường là khi đăng ký tài khoản người dùng cần phải xác minh địa chỉ email của họ.
  • Và còn nhiều vấn đề khác cần dùng đến hàm mail()
 

2. Sử dụng hàm mail() như thế nào?

 

2.1. Gửi mail bằng PHP



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



mail($to_email_address$subject$message, [$headers], [$parameters]);
 

Giải thích cú pháp hàm mail():


  • $to_email_address là địa chỉ email của người nhận
  • $subject là tiêu đề email
  • $message là nội dung bạn muốn gửi
  • $headers là tham số tùy chọn, nó có thể được sử dụng để bổ sung thông tin như cc, bcc


Lưu ý, trong Email ký hiệu:


  • cc: Là cho phép chia sẻ email đến nhiều người khác. Tất cả mọi người có trong phần cc đều nhìn thấy nhau
  • bcc: Là cho phép chia sẻ email đến nhiều người khác. Mọi người có trong phần bcc sẽ không nhìn thấy nhau.

 

2.2. Hướng dẫn cấu hình Giao thức truyền đơn giản (SMTP)


PHP mailer, sử dụng Giao thức truyền đơn giản (Simple Mail Tranmission Protocol hay còn viết tắt là SMTP) để gửi email.


Trên máy chủ, SMTP cần phải được cài đặt sẵn sàng.


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


Để configuring SMTP setting trên localhost của bạn, giả sử bạn đang sử dụng xampp trên windows, hãy xác định vị trí của php php.ini trong thư mục C:\\xampp\php

Mở nó bằng notepad hoặc bất kỳ text editor nào để biên tập lại. Trong ví dụ này thì chúng ta sẽ tạo mới. Bạn hãy bấm vào menu edit.


Hướng dẫn cấu hình SMTP (B1)

Hướng dẫn cấu hình SMTP (B1)


Click chuột phải, chọn Find... 
Hướng dẫn cấu hình SMTP (B2)

Hướng dẫn cấu hình SMTP (B2)

 

Hộp thoại sẽ xuất hiện.
Hướng dẫn cấu hình SMTP (B3)

Hướng dẫn cấu hình SMTP (B3)
 

Click vào nút Find Next
Hướng dẫn cấu hình SMTP (B4)

Hướng dẫn cấu hình SMTP (B4)


Trong file chúng ta có:


  • [mail function]
  • ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
  • ; SMTP = localhost
  • ; smtp_port = 25


Xóa dấu chấm phẩy trước SMTPsmtp_port và đặt SMTP vào máy chủ smtp của bạn và port thành port smtp của bạn. Cài đặt của bạn sẽ như sau:


  • SMTP = smtp.example.com
  • smtp_port = 25


Lưu ý rằng cài đặt SMTP có thể được lấy từ các nhà cung cấp dịch vụ lưu trữ web của bạn.


  • auth_username = example_username@example.com
  • auth_password = example_password
  • Lưu lại thay đổi
  • Khởi động lại Apache server.

 

2.3. Hướng dẫn gửi email qua ví dụ về hàm mail()



Bây giờ, hãy xem thử một ví dụ đơ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);
?>
 


Kết quả nhận được là:
Kết quả sau gửi thử email bằng hàm mail()

Kết quả sau gửi thử email bằng hàm mail()


Chú ý: Ví dụ trên chỉ có 4 tham số bắt buộc. Bạn nên thay thế email gửi và email nhận thật để thử nghiệm.

3. Làm sạch Email đầu vào của người dùng bằng hàm filter_var


Ví dụ trên sử dụng các giá trị được lập trình cứng trong code về địa chỉ email và các chi tiết khác để đơn giản.


Bây giờ, giả sử bạn phải tạo một biểu mẫu "Liên hệ với chúng tôi" để người dùng điền thông tin chi tiết và sau đó bấm gửi.



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


Chúng ta thử tùy chỉnh một function để xác thực dữ liệu và làm sạch địa chỉ email với hàm filter_var được dựng sẵn.


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


Nó có cú pháp như sau:




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


Giải thích cú pháp hàm filter_var:


  • filter_var() là hàm làm sạch và xác nhận dữ liệu
  • $fied là giá trị của trường chưa được lọc
  • SANITIZATION TYPE là kiểu làm sạch


Trong đó, SANITIZATION TYPE bao gồm các tùy chọn:


  • FILTER_VALIDATE_MAIL trả về true nếu địa chỉ email là hợp lệ và false nếu địa chỉ email không hợp lệ
  • FILTER_STANITIZE_MAIL loại bỏ các ký tự không hợp lệ như là: info\@domain.(com) trả về info@domain.com
  • FILTER_STANTIZE_ URL loại bỏ các ký tự không hợp lệ từ URL như là http://www.example@.comé trả về http://www.example@.com
  • FILTER_STANTIZE_ STRING loại bỏ các thẻ từ các chuỗi như <b>am bold</b> trả về am bold

Đoạn code dưới đây thực hiện sử dụng một function tùy chỉnh để gửi email an toàn.



<?php
    function sanitize_my_email($field) {

        // Loại bỏ ký tự không hợp lệ
        $field = filter_var($field, FILTER_SANITIZE_EMAIL);

        // Xác thực 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';

    // Kiểm tra xem địa chỉ nhận có hợp lệ không
    $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";
    }
?>
 

Kết quả nhận được là:
Kết quả sau gửi thử email bằng hàm mail() đã được làm sạch bằng hàm filter_var

Kết quả sau gửi thử email bằng hàm mail() đã được làm sạch bằng hàm filter_var
 

Một số lưu ý khi làm việc với email:


  • Email có thể bị chặn trong quá trình truyền bởi những người nhận ngoài ý muốn.
  • Có thể hiển thị nội dung của email cho người nhận ngoài ý muốn.
  • Bảo mật email giải quyết vấn đề này bằng cách truyền email qua Bảo mật Giao thức Truyền Siêu văn bản (HTTPS). 
  • HTTPS mã hóa tin nhắn trước khi gửi chúng.

Tổng kết



  • Qua bài này chúng ta đã biết thêm về hàm mail() sử dụng để gửi email trong lập trình Web PHP.
  • Xác thực dữ liệuLàm sạch dữ liệu là điều cần thiết để gửi email an toàn.
  • PHP cung cấp hàm filter_var() để làm sạch và xác thực dữ liệu hiệu quả.


> Nếu bạn đang tích cực học PHP để đi làm sớm thì khóa học LẬP TRÌNH WEB PHP này sẽ giúp bạn nhanh chóng đạt được mục tiêu. Giảng viên doanh nghiệp đào tạo + Kết hợp tuyển dụng ngay cuối khóa học!

---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #php

Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!