banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Hàm Mail() của PHP  XML
  [Programming]   Hàm Mail() của PHP 12/07/2006 09:22:26 (+0700) | #1 | 6015
[Avatar]
Vickizw
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 19:55:29
Messages: 339
Location: ColTech
Offline
[Profile] [PM] [WWW]
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.comfrom@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 FromReply-to. Lý do thì có nhiều, một trong số các lý do phải cung cấp header FromReply-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"!.
[Up] [Print Copy]
  [Question]   Hàm Mail() của PHP 12/07/2006 20:05:28 (+0700) | #2 | 6086
BigballVN
Elite Member

[Minus]    0    [Plus]
Joined: 12/06/2005 07:25:21
Messages: 610
Offline
[Profile] [PM]
Hay quá. Em đang học php mà vớ đc bài này như vớ được vàng. Kekeke
[Up] [Print Copy]
  [Question]   Hàm Mail() của PHP 12/07/2006 23:50:36 (+0700) | #3 | 6169
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
Đừ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 đâusmilie
[Up] [Print Copy]
  [Question]   Hàm Mail() của PHP 24/01/2007 07:06:00 (+0700) | #4 | 37821
[Avatar]
theson267
Member

[Minus]    0    [Plus]
Joined: 07/12/2006 13:13:03
Messages: 27
Location: Bắc Ninh
Offline
[Profile] [PM] [Email] [Yahoo!]
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ỉ!
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 23/08/2008 11:10:12 (+0700) | #5 | 148292
netsbs
Member

[Minus]    0    [Plus]
Joined: 11/01/2007 10:38:18
Messages: 7
Offline
[Profile] [PM]
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
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 24/08/2008 05:19:06 (+0700) | #6 | 148364
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]

netsbs wrote:
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 

Đúng thế! Mình cũng nghĩ như bạn.
Nếu mình có cái SMTP hoặc là host đó cấu chứng thực SMTP thì cấu hình như thế nào nhỉ....
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 02/05/2009 05:17:19 (+0700) | #7 | 179138
XuanHung_Cntt
Member

[Minus]    0    [Plus]
Joined: 09/01/2009 17:50:35
Messages: 13
Offline
[Profile] [PM]
bác ơi giúp e cài với!E ko thể cài đc để có thể gửi mail() trên localhost
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 03/05/2009 05:06:54 (+0700) | #8 | 179207
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Muốn send mail bằng SMTP server khác thì chỉ có cách là lập trình cho PHP tạo 1 Socket kết nối với SMTP server và dùng các lệnh SMTP để thực hiện việc gửi thư ( tham khảo RFC này để biết qua các lệnh http://www.ietf.org/rfc/rfc0821.txt )
Tham khảo mã nguồn sau để biết về quá trình send mail bằng Socket
http://www.phpclasses.org/browse/package/14.html
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 09/05/2009 10:31:02 (+0700) | #9 | 180016
[Avatar]
little_fire
Member

[Minus]    0    [Plus]
Joined: 05/07/2006 19:29:54
Messages: 82
Offline
[Profile] [PM] [Yahoo!]

netsbs wrote:
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 

Mình đang làm 1 site bằng PHP và mình có dùng class phpmailer http://sourceforge.net/projects/phpmailer dùng rất tốt. Gửi email qua smtp của gmail nhanh lắmsmilie
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 15/05/2009 07:15:47 (+0700) | #10 | 180625
lequi
Member

[Minus]    0    [Plus]
Joined: 29/04/2007 18:13:32
Messages: 77
Offline
[Profile] [PM]
cái quan tâm tiếp theo là gửi nó vào inbox hay bulk smilie
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 15/05/2009 12:56:00 (+0700) | #11 | 180644
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Nếu send bằng mail add của 1 account tồn tại trên mail server mà mình dùng smtp server thì sẽ không bao giờ bị cho vào bulk. Ví dụ dùng SMTP gửi mail đi bằng sender là abc@gmail.com (tồn tại thực) bằng smtp.gmail.com thì chẳng bao h vào bulk.
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Re: Hàm Mail() của PHP 17/05/2009 23:26:01 (+0700) | #12 | 180834
[Avatar]
tuandang1509
Member

[Minus]    0    [Plus]
Joined: 16/05/2009 23:06:26
Messages: 1
Offline
[Profile] [PM]

xnohat wrote:
Nếu send bằng mail add của 1 account tồn tại trên mail server mà mình dùng smtp server thì sẽ không bao giờ bị cho vào bulk. Ví dụ dùng SMTP gửi mail đi bằng sender là abc@gmail.com (tồn tại thực) bằng smtp.gmail.com thì chẳng bao h vào bulk. 

Cho em hỏi :
- Giả sử mình dùng cách này để gửi xác nhận đăng ký thành viên cho email của thành viên.
- VÀ có nhiều thành viên cùng đăng ký 1 lúc.
--> Phải gửi nhiếu email trong cùng 1 lúc. Vậy các mail sever này có ngăn chặn hành dộng này hay không ??
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|