[Programming] Hàm Mail() của PHP |
12/07/2006 09:22:26 (+0700) | #1 | 6015 |
|
Vickizw
Member
|
0 |
|
|
Joined: 06/07/2006 19:55:29
Messages: 339
Location: ColTech
Offline
|
|
Tác giả : Nguyễn bá thành
Nguồn : diendantinhoc.net
===================
Gởi mail trong PHP rất dẽ dàng sử dụng, PHP hổ trợ cho chúng ta hàm mail rất đơn giản và hiệu quả, bài viết này giúp ta hiểu rõ hơn.
HÀM MAIL() CỦA PHP
----------------------------------------
Send email trong PHP rất đơn giản, ta chỉ cần dùng duy nhất 1 hàm mail() được PHP cung cấp sẵn là đủ. Cú pháp của hàm mail() như sau:
bool mail(string to, string subject, string message[, string additional_headers)
Các tham số của hàm mail() có ý nghĩa như sau:
* to - địa chỉ người nhận email, là 1 string. Các giá trị hợp lệ của tham số to có dạng như sau:
'user@domain.com';
'user1@domain.com, user2@domain.com'
'User Name <user@example.com>';
'User Name 1 <user1@example.com>, User Name 2 <user2@example.com>'
'User Name 1 <user@example.com>;, user2@domain.com, User Name 3 <user3@example.com>'
* subject - tiêu đề của email, là 1 string. Tiêu đề của email không được chứa ký tự xuống dòng (\r hoặc \n).
* message - nội dung email, là 1 string. Nội dung email có thể do nhiều dòng ghép lại với nhau, mỗi dòng được phân cách bằng ký tự \n.
* additional_headers - (tuỳ chọn) dùng để chèn thêm các header vào email. Các header này không nằm trong phần nội dung của email mà dùng để quản lý việc gởi email (ví dụ chèn thêm các trường CC, BCC khi gởi email). Nhiều header có thể cùng ghép lại thành 1 string trong additional_headers, các header được phân cách nhau bằng chuỗi \r\n.
Hàm mail() sẽ trả về giá trị TRUE nếu như email được chấp nhận gởi đi và FALSE trong trường hợp ngược lại.
Lưu ý: Hàm mail() trả về giá trị TRUE không có nghĩa là email sẽ được gởi đến nơi nhận thành công. Giá trị TRUE được trả về chỉ có ý nghĩa là email được server chấp nhận gởi đi, còn khi nào thì email thực sự được gởi, gởi có tới nơi hay không thì chương trình không biết được (như vậy nếu bạn nhập sau địa chỉ người nhận ở tham số To thì sẽ không có cách nào chương trình biết được địa chỉ To có đúng hoặc tồn tại hay không!).
MỘT VÍ DỤ GỞI EMAIL VỚI HÀM MAIL()
------------------------------------------------
Ta hãy tạo 1 chương trình PHP nhỏ đẻ gởi email như sau:
//nội dung file example1.php
Code:
<?php
$from = 'from@domain.com';;
$to = 'to@domain.com';;
$subject = 'Example 1: Send simple text email';
$message = 'A plain text email.';
$header = "From: $from\r\nReply-to: $from";
if ( mail($to, $subject, $message, $header) ) {
echo "Email sent to $to!";
} else {
echo "Error occured while sending email to $to!";
} //end if
?>
Lưu chương trình vào file example1.php và chạy thử. Nếu quá trình gởi email thành công, bạn sẽ nhận được câu thông báo "Email sent to to@domain.com!", nếu có lỗi bạn sẽ nhận được câu thông báo "Error occured while sending email to to@domain.com!"
Lưu ý:
* Nhớ thay to@domain.com và from@domain.com thành địa chỉ email của bạn trước khi chạy thử chương trình!
* Có thể phải mất tới 5-10 phút email mới tới nơi, và bạn nhớ kiểm tra thư mục Bulk email vì nhiều khi email gởi tới bị để trong mục Bulk.
Trong cú pháp của hàm mail(), tham số additional_headers là tuỳ chọn, tức là bỏ qua cũng được. Tuy nhiên, trên thực tế bạn nên cung cấp tham số additional_headers cho hàm mail() với ít nhất 2 header From và Reply-to. Lý do thì có nhiều, một trong số các lý do phải cung cấp header From và Reply-to là vì nếu phần địa chỉ người gởi (From) là rỗng, các chương trình lọc email có thể cho rằng đây là emai spam và thế là email được tự động chuyển sang "Thùng rác"!. |
|
|
|
|
[Question] Hàm Mail() của PHP |
12/07/2006 20:05:28 (+0700) | #2 | 6086 |
BigballVN
Elite Member
|
0 |
|
|
Joined: 12/06/2005 07:25:21
Messages: 610
Offline
|
|
Hay quá. Em đang học php mà vớ đc bài này như vớ được vàng. Kekeke |
|
|
[Question] Hàm Mail() của PHP |
12/07/2006 23:50:36 (+0700) | #3 | 6169 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Đừng có mà mừng, kiếm được cái host có SMTP đi đã, còn nếu chạy localhost, cài Mercury là ok, nhưng nhớ là gỡ thằng McAfee ra không nó ko cho send đâu |
|
|
[Question] Hàm Mail() của PHP |
24/01/2007 07:06:00 (+0700) | #4 | 37821 |
|
theson267
Member
|
0 |
|
|
Joined: 07/12/2006 13:13:03
Messages: 27
Location: Bắc Ninh
Offline
|
|
Nếu ta dùng vòng for với số lần lặp lớn thì có thể gửi một lúc nhiều bức thư đến một địa chỉ! |
|
|
[Question] Re: Hàm Mail() của PHP |
23/08/2008 11:10:12 (+0700) | #5 | 148292 |
netsbs
Member
|
0 |
|
|
Joined: 11/01/2007 10:38:18
Messages: 7
Offline
|
|
Cho mình hỏi. Mình không có SMTP server thì mình sẽ dùng smtp server khác, nhưng để dùng được nó thì config nó như thế nào? Mong bạn giúp đỡ. Thanks |
|
|
|