Configue sendmail for php mail() (Win7) 1.7.7 [SOLVED]

Problems with the Windows version of XAMPP, questions, comments, and anything related.

Configue sendmail for php mail() (Win7) 1.7.7 [SOLVED]

Postby zhaopeterson » 25. October 2011 00:34

I am also having some interesting problems with php mail(). The scripts worked fine on my remove server (which means I can receive mail) as the site administrator from the contact form.

Since I am not familiar with Xampp configuration (I used xampp for three years all I did was turn MySQL and Apache on and off). I did read some of the threads on reagarding sending mail on this forum today, I am still confused.

Before I dump more questions, if I use the php mail() function to send mail, do I need to turn the mercury mail server ON in the xampp control panel?

The answer is yes right?! :D
zhaopeterson
 
Posts: 5
Joined: 24. October 2011 05:46
Operating System: window 7

Re: Mercury Mail Server Needs to be on when use php mail()?

Postby Sharley » 25. October 2011 02:03

The answer is no, as Mercury is a full blown mail server for sending and receiving emails for a large (company) LAN and is not required when using a form to email script.

Use sendmail and if you require authentication then upgrade the current sendmail as pointed out in this post:
viewtopic.php?p=187353#p187353
The newer sendmail versions allow you to set the authentication method for services like Gmail etc.

If you use my name as Author when searching for sendmail in the English XAMPP for Windows forums then you will see some configurations that have been successful.

If you get stuck then paste the relevant section of the php.ini file and the content of your sendmail.ini file and we will take a look at it for you.

See if that helps you configure sendmail effectively.

Good luck. :)
User avatar
Sharley
AF Moderator
 
Posts: 3316
Joined: 03. October 2008 05:10
Location: Yeppoon, Australia Time Zone: GMT/UTC+10
Operating System: Win 7 Pro 32bit/XP Pro SP3

Re: Mercury Mail Server Needs to be on when use php mail()?

Postby zhaopeterson » 25. October 2011 04:17

Thank you so much Sharley for your dedication and time for helping others!!You are awesome! :!: :!:
I know it could be frustrating sometimes to answer the similar questions over and over again....

If I leave the php.ini as is (no edit on it) this is the message I got:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your
"SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\2012_summercollege4kids
\includes_ck\processmail.inc.php on line 79


The following is the section in the php.ini I think I should tweek the values, right? (I copy as is without any modification listed below)
______________________________________
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

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

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; 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"
________________________________________________

If I turn on my Mercury Mail server I do not see any warning message, however I never receive any mails (which I would be if I load the exact script to a remote server) So I figure there is something in my XAMPP setting I need to tweek to make it work for me to send mail (say my someone@gmail.com) from my localhost. (I am forgetting this for now as you mentioned we should be able to send mail from a form just use the SENDMAIL.exe in xampp folder)

So I read a few post on mail suggesting check with my local ISP, so I called which they tell me about mine

SMTP (smtp.att.yahoo.com and port 465)

The first thing I did was in the php.ini file
____________________
step1: SMTP = smtp.att.yahoo.com (I changed from localhost to what myISP told me)

step2: smtp_port = 465 (I changed from 25 to 465)

step3: sendmail_from = postmaster@localhost (I just uncommented)

step4: sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" (I just uncommented this and leave the path as is because it is what I my path.
_____________________________________

same warning message appeared "Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\2012_summercollege4kids\includes_ck\processmail.inc.php on line 79"


So I went into "sendmail" folder located the sendmail.ini, here is as is (before I did anything)
_____________________________________
; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com 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_server=localhost
; smtp port (normally 25)

smtp_port=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

;default_domain=local

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

error_logfile=error.log

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

;debug_logfile=debug.log

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

;auth_username=
;auth_password=

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

;pop3_server=
;pop3_username=
;pop3_password=

; 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

;force_sender=me@localhost

; 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

;hostname=localhost
_______________________________

I did not think I need to tweak the sendmail.ini as I do not care if the mail is send from "locahost", I do not need to make it appear to look like "brookesdomain.com". Is that the purpose of "sendmail.ini"

However I did change:

step1: smtp_server=smtp.att.yahoo.com (changed from localhost)

step2: smtp_port=465(changed from 25)

I did uncomment error_logfile, however I do not know where to find it.

I still see this:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\2012_summercollege4kids\includes_ck\processmail.inc.php on line 79

So I am banging my head on the wall right now :mrgreen: :mrgreen:

I had my script send all the form message data to a database which I can see all the data (100 message I wrote to myself) are in the database, I just can not send to my own gmail account, or any account.

Thank you so much,
zhaopeterson
 
Posts: 5
Joined: 24. October 2011 05:46
Operating System: window 7

Re: Mercury Mail Server Needs to be on when use php mail()?

Postby Sharley » 25. October 2011 04:49

All changes are in red
[mail function]
; For Win32 only.
; http://php.net/smtp
; SMTP = localhost
; http://php.net/smtp-port
; smtp_port = 25

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

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; 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"
Save the file and restart Apache.

Port 465 is ssmtp (secure simple mail transport protocol) and so you may have to upgrade sendmail to get the required secure settings and associated library files...

Most of the following settings can be found in your Windows email client like Outlook or Outlook Express or what ever email client you use and they would have been provided by Yahoo when you signed up for email.

...but you can try this first:
; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com 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_server=smtp.att.yahoo.com

; smtp port (normally 25)

smtp_port=465 ; Try port 25 if you get an authentication error.

; 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

;default_domain=local

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

error_logfile=error.log

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

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

auth_username=youryahoousername
auth_password=youryahoopassword


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

;pop3_server=
;pop3_username=
;pop3_password=

; 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

force_sender=you@smtp.att.yahoo.com

; 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

;hostname=localhost
Save the file and restart Apache.


Follow the instructions to send a test mail mailtest.php:
Create a file called mailtest.php and put it in the C:\xampp\htdocs folder using this code
Code: Select all
<?php
error_reporting(E_ALL);
var_dump(mail('you@comcast.net', 'testmail', 'This is a testmail.'));
?>
Access the file in your browser using
http://localhost/mailtest.php.

1. What does the output say in your browser?

2. Look in the C:\xampp\sendmail\sendmail error.log and debug.log files if you get errors or the email is not delivered?

3. Allow some time for the mail to be delivered then can you see this new email has been delivered in Outlook Express - also check your spam folder if you have one?
User avatar
Sharley
AF Moderator
 
Posts: 3316
Joined: 03. October 2008 05:10
Location: Yeppoon, Australia Time Zone: GMT/UTC+10
Operating System: Win 7 Pro 32bit/XP Pro SP3

Re: Mercury Mail Server Needs to be on when use php mail()?

Postby zhaopeterson » 25. October 2011 06:55

Sharley, you are GOD sent :!: :!: :!: :!: :!: :!: :!: :!: :!: :!:

I tried your modification and it worked finally. I did spend about half an hour trying to figure out the authentication username and password with my local ISP (att.com) as I seen from the error log. I learned so much, no textbook or youtube tutorials teaches that.

Do you guys have a donation link, I will be happy to make a donation for all the future questions I will send your way :D :D :D :D :D :D :D :D

You should teach about Debugging XAMPP on lynda.com,

I will try to figure out Zend email stuff later...

Many thanks again,

Brooke
zhaopeterson
 
Posts: 5
Joined: 24. October 2011 05:46
Operating System: window 7

Re: Mercury Mail Server Needs to be on when use php mail()?

Postby Sharley » 25. October 2011 07:04

Your most welcome Brooke and thanks for the feedback 8)

Please feel free to start a new topic with your next question. :)

If there is a donation button it may be on the Apache Friends web site.

I think Linda should come here and read these forums. ;)

Good luck and best wishes. :D
User avatar
Sharley
AF Moderator
 
Posts: 3316
Joined: 03. October 2008 05:10
Location: Yeppoon, Australia Time Zone: GMT/UTC+10
Operating System: Win 7 Pro 32bit/XP Pro SP3


Return to XAMPP for Windows

Who is online

Users browsing this forum: No registered users and 101 guests