Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I am trying to use php to deliver a simple mail. Before I am using WAMP server, however as it does not include a SMTP client/server, so I switch to XAMPP. By using XAMPP, the mail() function returns true this time, however, when I check my gmail mailbox, I cannot receive the mail successfully. My XAMPP is installing on Window Server 2008. Based on what I have read, I think the cause of mail cannot be sent is Window does not have a mail server installed, so I checked in the server manager of Window, however it shows that SMTP server has been installed, so I have no idea what is the cause of the problem.

Here is my PHP code:

$subject = "Simple mail";
$message = "Here is a test mail";
$to = "me@gmail.com";
$from = "me@test.com";
$header = "From: ".$from;

if(mail($to, $subject, $message, $header))
   print "success<br>";
else
   print "fail<br>";

Below is the part about mail in php.ini, I have not made any changes:

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

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost  

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program filesC:\xampp) fakemail and mailtodisk do not work correctly.
; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (e.g. C:\sendmail) and use this for sendmail_path.  

; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
;sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the C:\xampp\mailoutput folder
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "C:\xampp\php\logs\php_mail.log"

At last here is the picture to show:

Mail server has installed

Mail server starts

Set up mail server with Mercury: Setting up with Mercury

share

migration rejected from stackoverflow.com Aug 14 '13 at 21:20

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by Tom O'Connor Aug 14 '13 at 21:20

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions must be relevant to professional system administration. Server Fault is a site dedicated to professionals; novice questions are off-topic. Please see the Help Center for more information on topicality. The best advice we can give you is to hire a professional to help you out." – Tom O'Connor
If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer 1

The problem is in these two lines:

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the C:\xampp\mailoutput folder
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

The comment is wrong. You actually have to uncomment the line if you want to use mailToDisk. And, since the line is uncommented, all your e-mails are simply being written to disk.

On my XAMPP installation, I found another error in the documentation. It doesn't write the e-mails to C:\xampp\mailoutput. It actually writes them to C:\xampp\tmp\mailoutput.

share