Send Mail With PHP From Windows

  • From: "Jim" <jhomme1028@xxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Sun, 21 Oct 2007 10:38:06 -0400

Earlier I was asking if there is a way to use the mail functions of PHP as you 
can on UNIX. I found these instructions on

As mentioned earlier, for Windows users there is a fake sendmail option. A bit 
more detailed description how to do this is:

If you have a test server in use running Windows and some kind of WAMP combo 
(XXAMP, WAMP Server, etc) then you'll notice that the PHP sendmail command
(mail()) does not work. Windows simply does not provide the sendmail statement 

There is a simple trick to get this to work though;

1) Download (or use the attached file) from

2) Unzip this in a folder on your c: drive (preferably use a simple path, for 
example c:\wamp\sendmail -- long filenames could cause problems)

3) Edit your PHP.INI file (note: WAMP users should access their php.ini file 
from the WAMP menu). Go to the [mail function] section and modify it as such:

[mail function]
; For Win32 only.

; For Win32 only.
;sendmail_from =

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

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

.. and save the changes.

4) Open the sendmail.ini and modify the settings to:


; you must change to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

; smtp port (normally 25)


; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging
; error_logfile=sendmail_error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging
; debug_logfile=sendmail_debug.log

; if your smtp server requires authentication, modify the following two lines


; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines

; to force the sender to always be the following email address, uncomment and
; populate with a valid email address.  this will only affect the "MAIL FROM"
; command, it won't modify the "From: " header of the message content


; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required


The optional error and debug logging is recommended when trying this the first 
time, so you have a clue what goes wrong in case it doesn't work.
Force_sender is also optional, but recommended to avoid confusion on the server 
Obviously, you@xxxxxxxxxxxxxx, and mysecretpassword should 
be the relevant info for your SMTP server.
Now restart the WAMP services (mainly Apache so PHP re-reads it's config).

Now you're good to go and use the PHP mail() statement as if you're a Unix user 

I will try these and report back. I will modify my web setup file for Apache if 
I get this working.


Take back your shopping life at

Other related posts: