Hướng dẫn dùng sends mail trong PHP

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 dùng sends mail trong PHP

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 dùng sends mail trong PHP

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

Click chuột phải, chọn Find... 

Hướng dẫn dùng sends mail trong PHP

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


 

Hộp thoại sẽ xuất hiện.

Hướng dẫn dùng sends mail trong PHP

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

Click vào nút Find Next

Hướng dẫn dùng sends mail trong PHP

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 = 
  • 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.

$to_email = '';

$subject = 'Testing PHP Mail';

$message = 'This mail is sent using the PHP mail function';

$headers = 'From: ';

mail($to_email$subject$message$headers);

?>
 


Kết quả nhận được là:

Hướng dẫn dùng sends mail trong PHP

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:

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ề
  • FILTER_STANTIZE_ STRING loại bỏ các thẻ từ các chuỗi như am bold 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.

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 = '';

$subject = 'Testing PHP Mail';

$message = 'This mail is sent using the PHP mail ';

$headers = 'From: ';

// 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à:

Hướng dẫn dùng sends mail trong PHP

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:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #php