Use default PHP mail function with SMTP server on

2019-01-28 00:24发布

问题:

I am working on a php/c# project which is an Email Server with a web interface to manage the Email Server application.

The program is supposed to work on windows and linux but I have been mostly doing my development in windows.

I've not come onto testing in Linux and have found a horrible problem.

From what I have googled on Windows PHP you can choose an SMTP server that you want to use, but it looks as if on Linux you don't have this option so when PHP sends an email it completely bypasses my program.

Is there a way to make PHP use an SMTP server of your choice, I know you can use PEAR to overrride the SMTP settings but I'd prefer that the standard PHP mail function would work so other software like PHPBB forum would send emails via my SMTP server instead of the default php mail.

Is this something that is possible or is my only option to use pear?

回答1:

You standard php mail function will just send to whatever is defined as the sendmail _path in php.ini

This is typically sendmail -t -i

You would need to configure sendmail to use smtp.

FWIW, most developer who do a lot of mail sending from PHP apps revile the mail() and instead use one of many mailing libraries (or services) which provide better configurability/reliability.

You could for example pipe the mail function to your own PHP script and use whatever library you wanted to in that script in order to do mail sending (and thus preserving the use of mail() function across applications).



回答2:

It's not possible to have the mail() function use an SMTP server on non-Windows systems.

See the docs on the php.ini setting smtp.

phpmailer has become a widely used PHP library for sending email. It supports a variety of options including SMTP and various authentication types and SSL/TLS. I'd recommend using that (or something similar See also Zend_Mail) if you need to send messages using SMTP.

So you won't be able to use the mail function, but your only other option isn't Pear.