XAMPP mail not working with PHP mail() function - php

I just installed XAMPP, Apache is running, so is MySQL and Mercury.
In Dreamweaver I created a php file with a mail($to,$subject,$msg,'From:'.$email); function, but when I ran the file from localhost it showed an error. After playing around with xampp control panel, turning mercury on and off, it's not showing any errors, yet is not send the email either... any ideas?
the 'admin' button on the cp for mercury does nothing.
Thanks!
R

You would have to configure the mercury server bundled with xampp to actually deliver/relay the mails.
But I suggest you use something like SwiftMailer instead of php's mail() function.
edit: there is a third option. The mini-smtp-client built into php/win32 can't do authentication. Therefore you can't simply put SMTP=mail.gmail.com; smtp_port=25 in your php.ini. But you can set sendmail_path and point to an application that can relay the message to another smtp server (including authentication), e.g. fake sendmail.
(But I still suggest swiftmailer)

You do not need to use a SMTP server like Mercury to send mails from your PHP.
I personally used two days on this matter, now expert in Mercury, almost, since it never worked with PHP.
Save a lot of time and use SWIFT MAIL, standalone solution, no SMTP server needed - the first example at this link works ! Swift mail is very elegant. Only needed is to download and add the lib folder in your php path. When the mail with the message "Wonderful Subject" ticks in the mailbox at first try, it is indeed a wonderful lib.
http://swiftmailer.org/docs/sending.html

You have to set your SMTP server settings in the php.ini file

Related

how to install SMTP server on xampp

i want to send mail via php mail() function.
now i need to install SMTP server on my computer for this one work.
i donwloaded the hMailServer, but i dont know what i need to setup there.
also, what i need to setup in the php.ini file?
i read some tutorials while searching google, but didnt work for me.
i dont want to use phpMailer with Gmail SMTP server, i want to send it from the SMTP server that found on the server.
also, before i was tried to setup send mail in php.ini, maybe i change there somthing and now i need to change it back, so i dont know what to change back, please tell me all things that i need to define for hMail will work...

Contact form test email with xampp

I have a contact page that I made following this tutorial, when I click send I get a message telling me that the message has been sent, but I ain't receiving any email, I'm trying to test it locally with xampp v3.1.0, I read that I have to change the smtp in php.ini, but it didn't work either.
I want to test it with my localhost, what do I have to do?
As can be seen in the link "Mail" in XAMPP homepage (i.e. "localhost"), with the default configurations of the XAMPP, mails sent by the php mail function can be found in ".../xampp/mailoutput" folder (Windows). This is useful for test purposes.
Maybe your change to the "php.ini"s SMTP directive can be a problem to this approach.
You often don't have mail capability from your local server unless you specifically set it up that way. If you want to be able to send mail locally, refer to this link. Of course, there are other ways, such as installing hMailServer or some other smtp server, but you should have sendmail as part of your Xampp installation.

Mail function - change SMTP relay

I use PHP's mail function to send emails from my server, which currently also handles mail. However, I would like PHP to start sending messages through a different SMTP relay, not the server it's running on. I checked out php.ini, and it appears that it is only possible to specify a different relay on a Windows PC, whilst my server is running OS X Snow Leopard. Is it possible to change the relay settings? Ideally, I wouldn't want to incorporate anything new into my PHP code, as I use the mail function all over the place.
You cannot do this without either setting up a sendmail alternative on your server that routes mail through SMTP, or much much easier, using a library like Swiftmailer.
PHP does not have the capability to use an external SMTP server built in (Unless you are on a Windows platform).

PHP: how to send email basics

I'm would like to use PHP to send email from my localhost to other people. What do I need to do that?
For example do I need to install mailserver? If I'm not mistaken there's is a language that you don't need a mailsever to send email. Is it right?
Inside the PHP.ini, there is [mail function]. How to configure this? I checked on the Internet, but do not really understand how it works.
[mail function] ; For Win32 only.
SMTP = localhost
smtp_port = 25
sendmail_from =admin#localhost.com //Not sure how to write this?
You would have to set up a local mail server if you want to send mail using the mail() function. You can't use a remote mail server as the php mail() function does not allow you to specify authentication credentials. However, I have found setting up a local mail server tedious and annoying, in addition it can be dangerous. I recommend looking into PHPMailer. It is simple to use and get running.
You need the software that will actually send the email after your PHP script has made a request to so (through using the mail function: http://php.net/mail). As stated in some of the previous responses there are software options for this, regardless of what operating system you run.
This, however, can sometimes be quite tricky for a beginner. Typically your ISP will give you access to an SMTP server from which to send emails, and you can set up your configuration to do this. For development purposes, this ought to do the trick for you. These details will likely be on your ISP's website (or possibly in your email client, somewhere.) Your config would end up looking something like
[mail function] ; For Win32 only.
SMTP = smtp.my-isp.com
smtp_port = 25
sendmail_from =my.account#my-isp.com
Failing that, you could just upload your script to your web host, where it should already be configured to work.
Hope that helps.
mail("recipient#domain.com", "Subject", "This is an email!");
You just need to install some email server. If you are on linux, you can try exim, if you are on windows, you can use the SMTP server that comes with IIS.
Yes, you do need a mail server available. PHP's mail() function accepts the information you give it and passes it off to the mail server for delivery. PHP doesn't deliver mail itself.
What mail server you use depends on what operating system you are using. Traditionally on unix-type machines there will be an installation of sendmail or some other service running. On Windows, you can specify the name of an SMTP server in the php.ini configuration file.
phpmailer is a good choice.
you can google it for details.
Actually, email is sent using socket.
The simple way is by using the mail() command. On Linux it's a pipe to sendmail binary and on Windows, I don't know, probably it use some Microsoft voodoo library.
Anyway, I strongly recommend to use phpMailer because it's a mature project, really stable, easy to setup, with a lot of features and it also includes an SMTP and IMAP client implementation, so absolutely cross-platform.
Anyway, you should consider to use anyway a local SMTP server as first hop to handle the mail queue in case of network failure.
There is no need for an installation of a special module to have access to mail functions in PHP.
But For the Mail functions to be available, PHP must have access to the sendmail binary on your system during compile time. If you use another mail program, such as qmail or postfix, be sure to use the appropriate sendmail wrappers that come with them. PHP will first look for sendmail in your PATH, and then in the following:
/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib.
It's highly recommended to have sendmail available from your PATH. Also, the user that compiled PHP must have permission to access the sendmail binary.
If you are working on a linux environment using a hosting provider is most likely that the sendmail is already present, otherwise you can check from a terminal doing:
cat some_file.txt |mail -s "test mail" user#yourmail.com

How can i configure my mail server in open atrium?

i have just succesfully installed open atrium, but i can't find the configuration of the mailserver... i currently cant send any mails because there is no SMTP Server defined, an without mails being send, no new users can be registered, because they recieve their pasword via mail...
i hope that somebody can help me :)
Assuming Open Atrum works the same way as drupal this should help in short:
Set up a mail server locally
change your php.ini settings to point to a mail server
You should probably be using the SMTP module.
According to the OpenAtrium Installation docs, all you need to do is enable the [standard Drupal cron job]. That worked for me in my OpenAtrium installation. Just to be clear, I did not have to alter php.ini or install the Drupal SMTP module.

Categories