Using wp_mail() instead of mail() in Wordpress does not work

前端 未结 4 762
清歌不尽
清歌不尽 2021-01-23 08:00

Since PHP mail has been disabled on my server it has stopped a theme integrated contact form from working.

The theme is called Boldy and it has its own sendmail.php file

相关标签:
4条回答
  • 2021-01-23 08:32

    By default, the Wordpress function wp_mail() uses PHPs internal mail() function so the change you've made won't fix the issue.

    If your web server has disabled the standard PHP mail() function then you will need to switch over to using SMTP for sending your emails.

    There's a few different ways to achieve this, but the easiest method I've found has been to use the Easy WP SMTP plugin. Once installed, you'll need to configure the plugin to use the login details for your SMTP server. If you hvae a Gmail address, you can use those details for setting it up.

    EDIT: You still need to switch your code over to using the wp_mail() function which will automatically use SMTP (if you have the WP SMTP plugin installed).

    0 讨论(0)
  • 2021-01-23 08:34

    Insert at line 2:

        define('WP_USE_THEMES', false);
        require('../../../wp-load.php');
    

    The trick is that sendmail.php as originally written doesn't actually load in the wordpress gear, so wp_mail isn't defined.

    The first line should be optional. I took it from the sample code at http://butlerblog.com/2012/09/23/testing-the-wp_mail-function/.

    0 讨论(0)
  • 2021-01-23 08:34

    It makes sense, because wp_mail() also has similair server requirements, which can be found here: http://codex.wordpress.org/Function_Reference/wp_mail

    0 讨论(0)
  • 2021-01-23 08:41

    I've lost about 30 minutes figuring this out.

    If you're using anything that allows you to configure SMTP within WordPress, take it out.

    Then put everything into a function:

    add_action('init','delay_until_init');
    function delay_until_init(){
       // call wp_mail() here
    }
    
    0 讨论(0)
提交回复
热议问题