Trong PHP, có một hàm buit-in dựng sẵn đảm nhiệm việc giúp ta gửi mail ngay trong script của mình. Mail được gửi trực tiếp bằng PHP, mà không cần phải nhờ đến một mail server trung gian để thực hiện. Đó chính là hàm Mail() mà tôi muốn giới thiệu cho các bạn trong bài viết lần này.
Trong PHP, có một hàm buit-in dựng sẵn đảm nhiệm việc giúp ta gửi mail ngay trong script của mình. Mail được gửi trực tiếp bằng PHP, mà không cần phải nhờ đến một mail server trung gian để thực hiện. Đó chính là hàm Mail() mà tôi muốn giới thiệu cho các bạn trong bài viết lần này.
Chú ý, hãy đảm bảo là host của bạn có mở mail() function. Xem trong phpinfo nhé.
Cú pháp hàm Mail() PHP
Trước hết ta sẽ nói về cú pháp. Cú pháp của hàm mail():
mail( $to , $subject , $message , [$additional_headers] , [$additional_parameters])
Tham số trong hàm Mail()
$to: chuỗi địa chỉ email người nhận. Có thể gửi cho nhiều người, ngăn cách giữa hai địa chỉ email bằng dấu phẩy. Ví dụ “[email protected], [email protected]”
$subject: chuỗi tiêu đề.
$message: chuỗi nội dung thông điệp. Có thể dùng HTML. Và tất nhiên, người đọc chỉ có thể đọc được nếu hộp thư hoặc trình đọc mail của họ hỗ trợ HTML.
$additional_headers: (có thể có hoặc không), các biến số bổ sung cho phần header của lá thư. (ví dụ như các thông tin như: người gửi, reply to, bảng mã, …)
$additional_parameters: (có thể có hoặc không), các thuộc tính phụ bổ sung cho email. Tham số này tương đối không cần thiết và bị disable set PHP ở chế độ Safe mode.
Một vài ví dụ
Gửi một email đơn giản vào hộp thư hỗ trợ của MinhNhut.info nào.
7 |
$message = ' Tét mẹt xà ( Test message ) ' ; |
9 |
// khai báo địa chỉ người gửi thông qua header |
13 |
// khai báo địa chỉ nhận thư trả lời |
17 |
// khai báo ứng dụng gửi mail, ở đây là PHP |
19 |
$headers .= 'X-Mailer: PHP/' . phpversion(); |
23 |
mail( $to , $subject , $message , $headers ); //gửi |
Trong đoạn code trên ta sẽ gửi một email đến hộp thư [email protected] với tiêu đề là “Xin chào” và nội dung là “Tét mẹt xà ( Test message )”. Lưu ý, nếu không khai báo rõ ràng người gửi ở phần header, thư của bạn sẽ có nguy cơ bị bộ lọc SPAM lọc mất. Như ta thấy ở trên, header thực chất cũng chỉ là một đoạn chuỗi.
Mỗi thuộc tính ta muốn gán cho phần header chỉ cần bổ sung vào biến $header theo cú pháp.
$header .= ‘Tên thuộc tính: Giá trị’ . “\r\n”;
“\r\n” là 2 ký tự dùng để ngăn cách các thuộc tính với nhau. Không được bỏ sót nhé.
Qua một ví dụ khác, ta sẽ gửi 1 lá thư cho nhiều địa chỉ email thông qua hàm mail của PHP.
9 |
// khai báo địa chỉ người gửi thông qua header |
13 |
// khai báo địa chỉ nhận thư trả lời |
17 |
// khai báo ứng dụng gửi mail, ở đây là PHP |
19 |
$headers .= 'X-Mailer: PHP/' . phpversion(); |
23 |
mail( $to , $subject , $message , $headers ); //gửi |
Đoạn code trên cũng dễ hiểu thôi, gửi mail đến 3 địa chỉ là [email protected], [email protected] và[email protected] (chỉ mang tính minh họa).
Bonus: Gửi EMail nội dung chuẩn Unicode (UTF-8)
Một rắc rối nhỏ khi gửi email unicode là khi nhận email tiêu đề thường hiển thị không bình thường, nội dung mail thì hay bị nhảy chữ, mất dấu (tiếng việt). Người nhận chỉ nhận được các ký tự tầm bậy tầm bạ. Để khắc phục, mình đã viết sẵn một hàm gửi Email unicode cho bạn.
1 |
function mail_utf8( $to , $subject = '(No subject)' , $message = '' , $header = '' ) { |
3 |
$header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n" ; |
5 |
mail( $to , '=?UTF-8?B?' . base64_encode ( $subject ). '?=' , $message , $header_ . $header ); |
Những gì mà hàm trên sẽ làm là tiến hành khai báo bảng mã (UTF-8) cho lá thư thông qua header. Và mã hóa phần tiêu đề, và thêm vào ‘=?UTF-8?B?’ ở phía trước, để hộp thư của người nhận biết đây là tiêu đề UTF-8 đã được mã hóa.
Khi cần, bạn chỉ cần gọi hàm này tương tự như hàm mail() có sẵn. Rất tiện lợi cho ứng dụng việt của bạn đấy.
Chúc bạn thành công! Mọi thắc mắc về hàm mail() này xin để lại comment. Hoặc qua Trang chủ -> Liên hệ. Và đừng quên đón xem bài viết tiếp theo nhé.
Host không hỗ trợ hàm Mail()
Hãy xem bài viết: Gửi eMail từ PHP thông qua SMTP với PHPMailer
Nguồn : MinhNhut.Info
Pingback: Minh Nhựt
Pingback: 321Dzô.Com