Configure WAMP server to send email - php

Is there a way that I can configure the WAMP server for PHP to enable the mail() function?

Configuring a working email client from localhost is quite a chore, I have spent hours of frustration attempting it. I'm sure someone more experienced may be able to help, or they may perhaps agree with me.
If you just want to test, here is a great tool for testing mail locally, that requires almost no configuration:
http://www.toolheap.com/test-mail-server-tool/

Install Fake Sendmail (download sendmail.zip).
Then configure C:\wamp\sendmail\sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user#gmail.com
auth_password=your_password
The above will work against a Gmail account.
And then configure php.ini:
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Now, restart Apache, and that is basically all you need to do.

Using an open source program call Send Mail, you can send via wamp rather easily actually. I'm still setting it up, but here's a great tutorial by jo jordan. Takes less than 2 mins to setup.
Just tried it and it worked like a charm! Once I uncommented the error log and found out that it was stalling on the pop3 authentication, I just removed that and it sent nicely. Best of luck!

You need a SMTP server to send your mail. If you have one available which does not require SMTP authentification (maybe your ISP's?) just edit the 'SMTP' ([mail function]) setting in your php.ini file.
If this is no option because your SMTP server requires authentification you won't be able to use the internal mail() function and have to use some 3rd party class which supports smtp auth. e.g. http://pear.php.net/package/Mail/

I tried Test Mail Server Tool and while it worked great, you still need to open the email on some client.
I found Papercut:
https://github.com/ChangemakerStudios/Papercut-SMTP
(updated URL for 2021)
For configuration it's easy as Test Mail Server Tool (pratically zero-conf), and it also serves as an email client, with views for the Message (great for HTML emails), Headers, Body (to inspect the HTML) and Raw (full unparsed email).
It also has a Sections view, to split up the different media types found in the email.
It has a super clean and friendly UI, a good log viewer and gives you notifications when you receive an email.
I find it perfect, so I just wanted to give my 2c and maybe help someone.

Sendmail wasn't working for me so I used msmtp 1.6.2 w32 and most just followed the instructions at DeveloperSide. Here is a quick rundown of the setup for posterity:
Enabled IMAP access under your Gmail account (the one msmtp is sending emails from)
Enable access for less secure apps. Log into your google account and go here
Edit php.ini, find and change each setting below to reflect the following:
; These are commented out by prefixing a semicolon
;SMTP = localhost
;smtp_port = 25
; Set these paths to where you put your msmtp files.
; I used backslashes in php.ini and it works fine.
; The example in the devside guide uses forwardslashes.
sendmail_path = "C:\wamp64\msmtp\msmtp.exe -d -C C:\wamp64\msmtp\msmtprc.ini -t --read-envelope-from"
mail.log = "C:\wamp64\msmtp\maillog.txt"
Create and edit the file msmtprc.ini in the same directory as your msmtp.exe file as follows, replacing it with your own email and password:
# Default values for all accounts
defaults
tls_certcheck off
# I used forward slashes here and it works.
logfile C:/wamp64/msmtp/msmtplog.txt
account Gmail
host smtp.gmail.com
port 587
auth on
tls on
from ReplaceWithYourEmail#gmail.com
user ReplaceWithYourEmail#gmail.com
password ReplaceWithYourPassword
account default : gmail

I used Mercury/32 and Pegasus Mail to get the mail() functional. It works great too as a mail server if you want an email address ending with your domain name.

Related

Ubuntu sendmail only sends to localhost

I have set up a LAMP server with sendmail on Ubuntu 14.04.
When sending mail, either from terminal or PHP mail(), it won't work properly.
When I use mail("user#localhost","test","test"); it sends it correctly, and I can read the message with mail from terminal, but when sending to Gmail address, message won't go trough.
Same outcome when using "test" | mail -s "test" xyz#gmail.com" from server terminal.
Any idea how to fix this?
I have been Googling for several hours now, I have tried everything without finding working solution, and I'm starting to lose hope.
If you're running Ubuntu here is a much simpler solution:
issue from command line >
apt-get install ssmtp
Then edit the configuration file in /etc/ssmtp/ssmtp.conf
A sample configuration to use your gmail for sending e-mails:
# root is the person who gets all mail for userids < 1000
root=your#email.com
# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587 (leave this the way it is)
AuthUser=your#gmail.com (just change this)
AuthPass=yourGmailPass (and change the password for your gmail account)
UseTLS=YES (leave this the way it is)
UseSTARTTLS=YES (leave this the way it is)
Note: Make sure the "mail" command is present in your system. mailutils package should provide this one in Debian based systems.
Then try send emails again, send it to another domain #gmail, #aol, #yahoo, #privatedomain besides localhost email addresses.
There're tons of possible problems, so you need to get some logs of error that happening.
Most probably, Google just rejects your email as your server is not correctly configured.

Send mail from localhost

I want to know if it is possible to send emails from localhost. If yes, how? I want to send emails from my localhost using my gmail account. I have a Mac OS X Yosemite Version 10.10.1 and I am running XAMPP 5.6.3-0.
Thanks!
You can use PHP mailer and not configure SMTP on your machine or you can follow this instructions to configure sendmail with GMAIL.
I like option 2 :) (Just for fun). Of course the first option is easier.
First go to the path that you installed Xampp application. By default it is C:\xampp\.
Then we need to find the php.ini file which contains the
configurations belong to PHP. This file by default is located at
C:\xampp\php\php.ini. Open it using any text editor like notepad.
Using search in the editor try to find sendmail_path. There should
be two of them. One is commented using a ; (semicolon) in the
beginning of the line , and the other one is not commented. Comment
the one that is active and active the one is commented. After the
edit it should looks like below... (Similar)
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
; XAMPP: Comment out this if you want to work with mailToDisk,...
;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Save the php.ini file and restart the Apache process. This is
necessary for the configuration to take place.
Next navigate to the sendmail directory. By default it should be
located at C:\xampp\sendmail and open the sendmail.ini in the
text editor.
Now we need to set the configuration for the mail server. For this
case I chose Gmail. The SMTP address of Gmail is: smtp.gmail.com
and the SMTP port for Gmail is 587.
Find smtp_server and write the Gmail SMTP address in front of
that.
Find smtp_port and write the Gmail SMTP port in front of that.
Scroll down , you should be able to see auth_username &
auth_password. Put your gmail username in front of auth_username
and put the password in front of auth_password .
Save and now you are good to send mail from local host.
Note that your PHP mail function should have "from" header,otherwise your mail will not go through.
Also remember the that the destination will receive the mail from your Gmail address not from the address you put in your PHP code.

WAMP & SendMail not working with GMAIL

I have scoured every tutorial out there on how to do this and I am still not getting the desired result so there must be some detail I am missing. The mail() function returns as though it succeeded however I NEVER GET ANY EMAILS in my sent or inbox
In a nutshell I have done the following:
Copied Sendmail.exe and Sendmail.ini along with their dlls to a
folder named Sendmail that resides in c:\program files\wamp\bin\
Edited the sendmail.ini to point to port 465 (for gmail) and smtp to
smtp.gmail.com, also configured the correct user name and password
authentication fields, as well as set smtp_ssl to ssl
Enabled the php_openssl and php_sockets under php extensions in wamp
edited php.ini [mail function] parameters. I commented out everything in win32 and then set smtp_path = c:\program files\wamp\bin\sendmail\sendmail.exe -t" then restarted all serviced on WAMP
Logged into my gmail account and enabled IMAP
Can anyone please help me out here???
This is from : http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/
I followed the steps and was able to send emails from wamp server. Your problem seems to be the name of the folder "Program Files" it has a space in it.
If the path to the sendmail.exe contains “space” (for example, “C:\Program Files\PHP\sendmail\”) then Apache would not be able to locate it. So, either store the sendmail.exe at a “non-spaced” location/path OR write the path in DOS style “C:\Progra~1\PHP\sendmail\” in the php.ini (sendmail_path = "C:\Progra~1\PHP\sendmail\sendmail.exe -t -i").
Have a look at > http://phpmailer.worxware.com/?pg=examplebgmail
and https://github.com/Synchro/PHPMailer
It's a lot easier and it saves a lot of time to send using frameworks rather than attempting to tinker wamp on your own.
(on a side note, it's MUCH easier to send gmail via smtp with python)
Good luck!

PHP Mail function from behind a proxy

I do not know too many details except that I access the internet from behind a proxy server (I have the IP and port)
and that I'm running PHP out of localhost (using WAMP)
The mail() isn't able to send emails.
Really new to PHP, so would appreciate help fixing this.
Do you have access to the php.ini file or the ability to override php.ini settings with the ini_set function?
Then you can try and override the SMTP settings and replace it with for example your ISP settings:
http://www.php.net/manual/en/mail.configuration.php#ini.smtp
Apparently you can't set a username/password if required by the SMTP server. So you probably have to use a third-party e-mail library. Try Swift: http://swiftmailer.org/
Or check this post with a similar question: php.ini & SMTP= - how do you pass username & password

PHP mail() on Windows: no errors, the email isn't sent

I'm currently trying to debug an Elgg-based website (I didn't develop it) and I would like to send the emails directly from local development machine (WinXP). I'm running WAMP with Apache 2.2.11 and PHP 5.3.0
After some searching, the simplest solution that I've come across is using fake sendmail to forward it to my GMail/Google apps account via SMTP and let it do the sending. The problem is that I get no errors whatsoever, but the email isn't being sent.
Here's what I did:
Copied the sendmail.exe and sendmail.ini to a subfolder in WAMP
Configured it via sendmail.ini (the configuration settings are ok)
Edited php.ini to add the path to sendmail.exe
sendmail_path = "C:\Program Files\wamp\bin\sendmail\sendmail.exe -t"
Commented out the windows SMTP settings in php.ini
; SMTP = localhost
; smtp_port = 25
; sendmail_from = xxx#domain.com
; mail.force_extra_parameters =
The mail.log file shows the following:
mail() on [C:\Program Files\wamp\www\mail.php:9]: To: xxx --
Headers: From: xxx Reply-To: xxx X-Mailer: PHP/5.3.0
My guess is that the problem is that the default Windows option (to specify the server and not the sendmail utility) is not overriden. In phpinfo() I still get the SMTP -> localhost and smtp_port -> 25 options, even though I commented them.
If anyone managed to get this working, I'd really appreciate some help. In my opinion, using fake sendmail is a lot simpler than installing a mail server on your machine.
Thanks!
P.S. Please don't suggest PHPMailer and the like, because I have to use the mail() function. That's how Elgg works.
I've gotten it to work eventually. The problem was that PHP had a bug in parsing .ini files with spaces in the path (for sendmail). It was fixed in version 5.3.0, but the manual had no info on this.
So, yes, it is possible to use sendmail with PHP on Windows :D.
Thank you all for your time!
Make sure you have SMTP Service running on your local machine and that SMTP Port(25) is opened.
Have a check on the services (Run->services.msc) and look for Send Mail Transfer
If you cannot find SMTP on the services list, you must install it:
To add,
Run->appwiz.cpl->Add Remove Windows components->IIS->Details->SMTP
I am not sure if this helps or not, what i used to do in these scenarios was to setup , outlook on my machine and have it set to get emails from the pop every 5 mins or so, that way my ip/machine was authenticated against the pop and if i just set the :
SMTP = localhost
smtp_port = 25
in php.ini , the mail function worked fine. So in your case just set your outlook to work with a pop and use that smtp in php.ini and hopefully it should work. I havent tested this will GMail though.
P.S. Please don't suggest PHPMailer and the like, because I have to use the mail() function. That's how Elgg works.
...unless you're using a plugin that changes this behaviour:
http://community.elgg.org/pg/plugins/costelloc/read/16498/phpmailer

Categories