简体   繁体   中英

How can I use PHP Mail() function within PHP-FPM? On Nginx?

I have searched everywhere for this and I really want to resolve this. In the past I just end up using an SMTP service like SendGrid for PHP and a mailing plugin like SwiftMailer. However I want to use PHP.

Basically my setup (I am new to server setup, and this is my personal setup following a tutorial )

Nginx
Rackspace Cloud
PHP 5.3 PHP-FPM
Ubuntu 11.04

My phpinfo() returns this about the Mail entries:

mail.log                     no value
mail.add_x_header            On
mail.force_extra_parameters  no value

sendmail_from   no value
sendmail_path   /usr/sbin/sendmail -t -i

SMTP        localhost
smtp_port   25

Can someone help me to as why Mail() will not work - my script is working on all other sites, it is a normal mail command. Do I need to setup logs or enable some PHP port on the server?

My Sample script

<?
    # FORMS VARS

    // $to = $customers_email;
    // $to = $customers_email;

    $to = $_GET["customerEmailFromForm"];

    $subject = "Thank you for contacting Real-Domain.com";
    $message = "
    <html>
    <head>
    </head>
    <body>
    Thanks, your message was sent and our team will be in touch shortly.
    <img src='http://cdn.com/emails/thank_you.jpg' />
    </body>
    </html>
    ";
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $headers .= 'From: <real-email@real-domain.com>' . "\r\n";

    // SEND MAIL
    mail($to,$subject,$message,$headers);

?>

Thanks

As there is no value for sendmail_from you need to set one in php.ini :

sendmail_from = "you@example.com" 

Or in the headers when you call to mail :

mail($to, $subject, $message, 'From: you@example.com');

The email address should follow RFC 2822 for example:

  • you@example.com
  • You <you@example.com>

Failing that, have you actually installed a working email system?

If not, you can install postfix with the following command:

sudo apt-get install postfix

See below for more information on configuring postfix for use with PHP in Ubuntu:

https://serverfault.com/questions/119105/setup-ubuntu-server-to-send-mail

If found that on a new installation of Ubuntu 14.04 with nginx and PHP-FPM (no apache), neither postfix nor mailutils were installed.

I used: sudo apt-get install postfix

(as in the recommended answer)

AND

sudo apt-get install mailutils

to get everything working on my server. Both were required. An entry in PHP.ini (as mentioned in the recommended answer) may also have helped, but without both of the other packages, it wouldn't have made a difference.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM