Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

How do I configure PHP to send mail using mail() via a remote SMTP server?

I've tried to do this using php.ini but it seems that you can only do that under Windows32 and I want to do this on my Unix server.

Also I've tried to change the configuration for sendmail so it would use a remote SMTP server but I'm not sure that's possible.

share|improve this question
add comment

7 Answers 7

My choice is setup a postfix server in the same web server that sent mail only for localhost and with this setting in main.cf to use a remote SMTP server:

relayhost = [a.b.c.d]

It works for me.

share|improve this answer
    
HD, can you please give more details, or point me to a resource that explains this. I've a Google account (as well as Google Apps), and I beleive SMTP requires authentication. Google is using TLS for SMTP on port 587 (and not 25). Where do I specify all this information? –  Uri Jun 1 '11 at 18:10
    
This is the best answer really cause you offload the smtp to postfix. If you send mail via your app and the remote server is down you are blocking the request. The best option is to pass off the mailing to a worker in a queue to do that work though but this is a good first step in the right direction. –  Mike Oct 8 '12 at 3:47
add comment

It's not possible, AFAIK. I would either:

  1. Use a fuller functioning mail class such as PEAR::Mail.
  2. If all mail from that machine should be smart-relayed then consider configuring SSMTP as your sendmail binary.
share|improve this answer
add comment

msmtp can be used as an alternative to sendmail which simply forwards traffic directly to an external SMTP server. It's pretty easy to set up and works very well.

share|improve this answer
    
msmtp saved my life :) –  w00t Feb 25 '13 at 22:07
add comment

You can either use PHP's inbuilt IMAP tools or the very handy PHPMailer

This could be better answered on Stack Overflow I fear...

share|improve this answer
2  
+1 for the answer, I disagree with the later comment though. Usually the sysadmins get the "fun part" of configuring SMTP as not all programmers have any idea of what that is. They just want "email working". Of course, I'm generalizing, no pun intended. –  Andrioid Jul 14 '09 at 15:50
add comment

PHP on Linux relies on sendmail. I would recommend using a different mail function from another library if you really want to do this. There are recommendations on the following StackOverFlow Post: http://stackoverflow.com/questions/966907/specify-smtp-server-for-php-mail-in-freebsd

share|improve this answer
add comment

PHP by itself can't do this.

Simple forwarders such as ssmtp have some problems relaying php mails.

http://www.freehackers.org/thomas/2008/07/13/linux-a-second-class-citizen-in-the-php-world/

share|improve this answer
add comment

The internal mail() function can only use SMTP on a Windows machine like you have said.

The only option is using PHPMailer. You can also try the PEAR PHP package: http://pear.php.net/package/Mail

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.