I have been trying to execute the PHP mail() function and wp_mail() function in a PHP function in WordPress.

The PHP function is called by a cron hook. The problem is, it doesn't execute the mail() or wp_mail() functions at all. I even threw it inside another function which I know works perfectly, and again, the cron doesn't execute the mail command. It works outside the function and it works if I call the function manually (myfunction();) but when cron calls it, it doesn't work.

Any light? WP 2.9


I'd say the first thing to check is whether or not the cron is actually running properly. Whenever I have issues like this, it's usually with the cron run itself, not with the code it's calling.

Remove all of the code inside your hooked function and replace it with a single line that sets an option--something named "my_cron_last_ran" or whatever--and set the option's value to the current time. If the option doesn't appear in your wp_options table, the cron hasn't run properly.

The other troubleshooting thing I'd try is to remove everything but the mail stuff from your hooked function. If it runs and sends mail, then the issue could be that code BEFORE your mail stuff is erroring out and causing the whole thing to fail.


Based on what you wrote, wp_mail works but cron doesn't. So that's where you start troubleshooting: Find out why your function isn't triggering via cron.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy