349: Unable to use php mail function in PrestaShop 1.5

In the PrestaShop 1.5 back office, you have the ability to send email via either the php mail() function or SMTP. It is the most common to use the php mail() function. When using this setting, you may receive an error like the one below:

Sending failed using mail() as PHP’s default mail() function returned boolean FALSE

This error occurs because of a false return code for the following statement in the MailSend.php.

if (!ini_get(“safe_mode”)) $success = mail($to, $subject, $message, $headers, $params); else $success = mail($to, $subject, $message, $headers);

The first thing you want to check is to see if the mail() function is enabled on your server. This can be easily checked by using a phpinfo page. If the mail function is disabled, it will display in the disable_functions label as shown here.

php info description

If the mail function is enabled, then you may need to follow the steps below to fix the issue and allow your site to send mail. Follow the guide below as we show you how to fix the “Sending failed using mail() as PHP’s default mail() function returned boolean FALSE” error in PrestaShop 1.5.

Fixing the ability to use the mail function in PrestaShop 1.5

  1. First, log into your cPanel dashboard.
  2. From the main cPanel, navigate to the root folder for your PrestaShop application by using the File Manager.
  3. Once in the root folder, you will need to make three code changes in three files. The first is located in the /tools/swift/Swift/Plugin/MailSend.php at around line 158.

    Change

    $headers = $headers->build();

    To

    $headers = $headers->build();
    $params = “”;
  4. Next, navigate to the /tools/swift/Swift/Message.php file to around line 79.

    Change

    $this->setFrom(“”);

    To

    $this->setFrom(“yourmail@example.com”);
  5. Finally, navigate and change the /tools/swift/Swift.php file at around line 370.

    Change

    if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);

    To

    if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);
    if (!$has_reply_to[0]) $message->setReplyTo($from->getAddress());
  6. Ensure you save each of the edited files in order to activate the changes. Your PrestaShop 1.5 site should now be able to send email. Special thanks from Sales Mechanics in the PrestaShop.com forums for this fix!

Thoughts on “349: Unable to use php mail function in PrestaShop 1.5

  • I turned on Error reporting in Prestashop but I don’t get any message on a display. Where can I check the logfile? Maybe useful.

    • Hello Bianchery,

      I am unsure if you are one of our customers so I cannot check into your server. Did you follow the same instructions above and still get the error? Have you also tested the mail() functionality separate from the PrestaShop?

      Your host may also be able to provide more information on whether mail() is working for your server/account.

      Kindest Regards,
      Scott M

    • This fix works for prestashop 1.6.0.9 as well , i had same issue and your post help me to fix my mail sending problem, thank you very much!!

  • Hello John,

     

    Thank you very much for the help. This problem little bit mistery for me. My Prestashop run more than 1 years ago without any problems. I use Prestahop 1.5.2.0

    Few weeks ago happened when change the status in one order for shipped, the system show the error message: have a problem with the mail. The costumer don’t get any mail.

     

    I went to “Advanced parameters > Email” and try to send test email. Didn’t works.

     

    I got this message:

    “Error: please check your configuration
    Sending failed using mail() as PHP’s default mail() function returned boolean FALSE.”

    After is found this topic, changing every php files, but still unable sending email.

    • Hello Bianchery,

      Thank you for your comment. We are happy to help, but will need some additional information. What happens when you try to send mail. Are you getting any errors? What are they?

      Turning on Error reporting in PrestaShop may help provide a more detailed error.

      Are the emails being returned/bounced?

      If you have any further questions, feel free to post them below.
      Thank you,

      -John-Paul

Leave a Reply