I'm trying to configure my php.ini file so I can send emails from 'localhost' in my dev environment using PHP. I no longer have access to an open SMTP server, and Gmail no longer works with their new SSL setup. I've done a lot of research and seen lots of "solutions" here and elsewhere, but they don't work. I've tried installing local SMTP servers (hMailServer asks for a password to install, Free SMTP Server doesn't work, etc).
Does anyone know of a free SMTP server I can setup in my php.ini file, or any other way to send mail from localhost (I just need it for testing purposes). I don't want to have to change code and send emails in a completely different way when I switch to production. (I'm using Zend and the Zend_Mail class)
In windows I was usually using Mercury to sent emails from localhost for testing purposes. Mercury is free for non-commercial use and it is also used in xampp.
You could try using Zend_Mail_Transport_File for testing instead.
$mail = new Zend_Mail();
$mail->send(new Zend_Mail_Transport_File());
Solution for XAMP, WAMP or etc..
download hMailServer; Then configure program:
- When you first open hMailServer Administrator, you should add new domain.
- Click on the "Add Domain ..." button at the Welcome page.
- Under the domain text field, enter your computer's IP, in this case it should be 127.0.0.1.
- Click on the Save button.
- Go to Settings>Protocols>SMTP and select "Delivery of Email" tab
- Enter "localhost" in the localhost name field.
- Click on the Save button.
If you need to send mail using a FROM addressee of another computer, you need to allow deliveries from External to External accounts. To do that, follow these steps:
- Go to Settings>Advanced>IP Ranges and double click on "My Computer" which should have IP address of 127.0.0.1
- Check the Allow Deliveries from External to External accounts checkbox.
- Save settings using Save button.
If you use Gmail account, then need small modification :
- Go to Settings>Protocols>SMTP and select "Delivery of Email" tab
- Enter "smtp.gmail.com" in the Remote Host name field.
- Enter "465" as the port number
- Check "Server requires authentication"
- Enter your Google Mail address in the Username field
- Enter your Google Mail password in the password field.
- Check "Use SSL"
You will have to use this confuguration for the transport of the mail
$transport = new Mail\Transport\Smtp();
$options = new Mail\Transport\SmtpOptions (array(
'name' => 'host',
'host' => 'smtp.gmail.com',
'port'=> 587,
'connection_class' => 'login',
'connection_config' => array(
'username' => "yourGmailUserMail",
'password' => 'yourGmailPassword',
'ssl'=> 'tls',
),
));
$transport->setOptions($options)
;
and it will works.