FAQ Category: General

Why doesn’t Postie automatically publish my emails when running manually works?

WordPress cron (which Postie relies on) doesn’t run unless a page is accessed on the site. So if you send an email, but nobody accesses the site for 3 days Postie won’t be given the chance to fetch the email and publish the post.

To ensure that Postie runs smoothly on a low or no volume site you need to ensure that a page gets hit (any page is fine). Use something like cron + curl on Linux or install curl on Windows and use the Scheduled Tasks control panel or use one of the online cron services. See this page for more info.

It has been reported that enabling the “alternate” cron has worked for some people.

In your wp-config.php file add:

define('DISABLE_WP_CRON', true); 
define('ALTERNATE_WP_CRON', true);

add this before the line that says “That’s all, stop editing! Happy blogging.”

Fatal error: Out of memory

If Postie isn’t working right and you see “Fatal error: Out of memory…” in your logs it is time to increase how much memory PHP allocates to WordPress.

By default 40Mb is allocated.

To change your memory open up your wp-config.php file and add one of the following settings

Increase PHP Memory to 64MB

define('WP_MEMORY_LIMIT', '64M');

Increase PHP Memory to 96MB

define('WP_MEMORY_LIMIT', '96M');

Please note, this setting may not work if your host does not allow for increasing the PHP memory limit–in that event, contact your host to increase the PHP memory limit. Also, note that many hosts set the PHP limit at 8MB.

Postie Not Checking Email

Postie relies on the built-in WordPress Cron process to fetch emails and turn them into posts. However, WordPress requires that there be traffic to your site in order to run the Cron process.

The first check you must do to be sure the WordPress Cron is enabled (it is by default). Clicking Test Config on the Postie settings page will tell you if Cron is disabled. Look for


If you see DISABLE_WP_CRON: On open your wp-config.php file and find a line like

define('DISABLE_WP_CRON', true);

if present, remove it. WordPress Cron should now work.

External Cron

If you would prefer to have more fine-grained control of how Postie checks for mail or you can’t get the WordPress Cron to work, you can setup a cron job.

From Wikipedia

The software utility Cron is a time-based job scheduler in Unix-like computer operating systems. People who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals. It typically automates system maintenance or administration—though its general-purpose nature makes it useful for things like connecting to the Internet and downloading email at regular intervals. The name cron comes from the Greek word for time, χρόνος chronos.

The Easy Way

If you are using a hosting company that doesn’t allow you access to cron or you don’t want to mess with it you can use a service like SetCronJob  or EasyCron to access http://<mysite>/wp-cron.php

If your hosting company uses cPanel for managing your domain you can add a cron job through the cPanel interface. See the cron job docs then choose one of the commands listed below.

The Techie Way

Setup a cronjob to access http://<mysite>/wp-cron.php

Note this runs all the WordPress cron jobs if they are scheduled to run. Note also that if you have set Postie to check for emails every 30 minutes accessing this URL every 5 minutes will not speed things up, it will just ignore the request until 30 minutes have passed since the last check. Change the frequency by changing the Postie settings.


If your site runs on a UNIX/linux server, and you have shell access, you can enable mail checking using cron.

Example: This starts the wp-cron every ten minutes with wget*/10 * * * * /usr/bin/wget -O /dev/null http://<mysite>/wp-cron.php >/dev/null 2>&1


You will need to install wget or curl.
Then use the Task Scheduler control panel to call wget or curl.
wget examplewget http://<mysite>/wp-cron.php

curl examplecurl http://<mysite>/wp-cron.php

The Unusual Way

We currently recommend that you access http://<mysite>/wp-cron.php rather than using http://<mysite>/?postie=get-mail as documented below, however, sometimes direct access is required. Please be aware that this method does not check to see if Postie is already running so it is possible to cause many email checks to be running at the same time which can cause all sorts of problems.

Setup a cronjob to access http://<mysite>/?postie=get-mail Note that every time you access this page Postie will run – it is like clicking Run Postie on the Admin screen.

Note that before Postie 1.6 the URL was: http://<mysite>/wp-content/plugins/postie/get_mail.php This URL is no longer supported.

Get Detailed Postie Output

As of version 1.5.5 you can click the “Debug” button to have Postie check for emails and report debugging information to the screen.


To always log debug info to a log file

You can enable a higher level of logging for Postie activity by setting the “Enable Debug Logging” setting on the Mailserver tab.


Once you turn this on Postie will display on screen and write to your log file some very detailed information about what is happening. This information can be very useful in diagnosing an issue.


Typically the WordPress log file is located at wp-content\debug.log

If the debug.log file doesn’t show up then create a file debug.log in the wp-content directory and then “chmod 666 debug.log” or use cpanel to do the same thing.

It is possible that the error log is in a different location. Clicking Test Config will tell you where it is located.


Troubleshooting Postie

If you can’t get Postie to work and you’ve checked all the other FAQs it is likely that you are experiencing a conflict between Postie and another plugin or your theme.

The first thing to try is switching your theme to one of the standard themes such as Twenty Twenty-One. Now trying testing Postie again. If Postie works then you need to get in contact with your theme author to see what the problem is.

If Postie is still not working the next step is to disable all plugins except Postie. Test that Postie works with no other plugins active. If Postie still doesn’t work then something more serious is wrong and you will need to ask for help in the support forum.

Assuming Postie works with all the plugins disabled then next step is to enable one plugin at a time and test to see if Postie is still working. If Postie stops working then you know which plugin caused the conflict and you should contact the plugin author.

How to get bbPress to work with Postie

bbPress is a forum plugin for WordPress. Since most forums allow you to interact with them via email there are many people looking for this feature in bbPress. Out of the box bbPress does not have the ability to send or receive emails so many people look to Postie to help.

Unfortunately there are many difficulties in getting Postie to work with bbPress (or any other forum software) due to the fact that the incoming and outgoing emails need to have some way to hook them together so the right forum topic is updated. Postie only deals with incoming emails so it is not an ideal solution for this problem.

Luckily there is a ppPress plugin located here: https://github.com/rmccue/Falcon

There are some limitations, but it seems to be the only solution that supports a full round trip emails.

Could not update post in the database

If you ever see the message “Could not update post in the database” when researching why an email didn’t show up here are the things to check:

  • Click the Test Config button and look at the encoding section:
    • default_charset, DB_CHARSET, WordPress encoding and Postie encoding should all the same and are ideally UTF-8.
    • Verify that the DB_CHARSET actually matches the encoding on the database and the tables.
  • Consider upgrading your version of PHP to 5.6 or newer. Some users have reported that the error goes away when upgrading from PHP 5.3 to 5.6.
  • Consider upgrading MySQL. The function that detects the condition which causes this error relies on the database to do character set conversion/validation in some cases.
  • Add a pre_post_update filter and inspect the values in the $data parameter.

Permission Denied Error

If you are getting a message in the logs something like:

Socket error: 13 – Permission denied getemails: There was an error connecting to the server Permission denied

And you are running SELINUX then likely you need to give Apache permission to connect

You do this by changing the httpd_can_network_connect variable. The httpd_can_network_connect variable has this documentation: Allow HTTPD scripts and modules to connect to the network

Run the following command while logged into the same server that has Postie on it:

setsebool -P httpd_can_network_connect 1