Can’t find what you’re looking for? Ask a question on the support forum.


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.

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.

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.


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.

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

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:///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:///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:///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:///wp-cron.php

curl examplecurl http:///wp-cron.php

The Unusual Way

We currently recommend that you access http:///wp-cron.php rather than using http:///?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:///?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:///wp-content/plugins/postie/get_mail.php This URL is no longer supported.

To view the details one time go to the Postie admin page and click the “Debug” button and the details will be displayed on your screen.

See also Get Detailed Postie Output

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.

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.”


No. Do not add an iframe in your footer to get Postie to check mail periodically. Postie uses WordPress cron to automatically check mail. To force a email check periodically, set-up a cron job. See our cron troubleshooting page.

The IMAP extension was required for some functionality in Postie versions before 1.8, but is no longer needed.

Mail Server

Yes. You can use either pop3-ssl or imap-ssl with a gmail account (including Google Apps). Before attempting to use with postie, make sure that you enable POP or IMAP in your Gmail preferences. See this for more info.

Yes, but you must use an email setup using the GoDaddy email service. See this page for more info.

If you get the following error message when trying to retrieve email messages

Warning: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known

then you need to contact your hosting company as they either have something misconfigured or they are blocking access to your email service.

Starting in early 2022 Google started sending out messages similar to this:

To help keep your account secure, from May 30, 2022, ​​Google no longer supports the use of third-party apps or devices which ask you to sign in to your Google Account using only your username and password.

The solution is to use an “app password”.

  1. Go to https://myaccount.google.com/ and ensure that you are logged in as the same account you are configuring for Postie.
  2. Under “Security”, activate the the “2-steps verification” on the Google account.
  3. Once it’s activated, set “App passwords”, “Select App” to “Mail”, “Select device” to “Other (custom name)”, give it a name (Postie Password) and copy the password generated at the end of the “App passwords” process.
  4. Use the generated password on Postie instead of the Google account password.


Note that you will need to enable 2-Step-Verification for your domain if the App Password option isn’t available.

If this solution doesn’t work for you the solution is either

a) Don’t use GMail for your secret Postie email. Use a different provider that supports IMAP or POP.

b) Use a GMail email, but forward all emails to a different provider that supports IMAP or POP.

Postie works well with Gmail (and Google apps for business).

Please take a look at our Gmail settings page for details and prerequisites.

Postie works well with GoDaddy hosting, but you are required to use GoDaddy mail servers (rather than something like Gmail).

  • Protocol: pop3
  • Use Transport Layer Security: no
  • Server: pop.secureserver.net
  • Port: 110
  • Userid: your full email address
  • Password: your password

The answer is “you can’t do that directly”

However, what you can do is have each separate inbox forward their mail to a central mail account which you then configure Postie to check.

For example you have 2 email accounts that you want your users to send email to: askmeaquestion@example.com and news@example.com

You then create a third email account (postie@example.com) that you don’t tell anyone about and your configure both askmeaquestion and news to forward every email to postie@example.com

You then configure Postie to check the postie@example.com email account.

Many people have this arrangement so that emails sent to each account get assigned different categories. To accomplish this you need to purchase the Category Per User AddOn  and follow the directions for configuring Multiple Inboxes.

If you are using Gmail you have a simpler option. With Gmail it will ignore anything after the plus sign (+) so if your email is postie@gmail.com emails to postie+mine@gmail.com and postie+yours@gmail.com will all show up in postie@gmail.com and you can is the Category Per User AddOn to assign different categories.

Microsoft is working towards disabling IMAP & POP when accessing Exchange.

Unfortunately the solution they are proposing requires a high level of administrative access to your Exchange instance and some pretty complicated code from Postie.

The recommended solution is either

a) Don’t use Office365 for your secret Postie email. Use a different provider that supports IMAP or POP.

b) Use an Office365 email, but forward all emails to a different provider that supports IMAP or POP.

When you click Test Config Postie tries to connect your your mail server to ensure everything is set up correctly. (Be sure to click Save first if you changed anything!). Unfortunately sometimes the error messages aren’t very clear and you need a way to verify things.

One common issue is that the port you are trying to use is blocked or your mail server isn’t listening on the port. You can verify these conditions by using the telnet command.

Note: You need shell access to the server Postie is installed on.

Connect to your server via RDP, VNC or SSH and open a command/terminal window and type something like the following:

telnet mail.examples.com 110

Substitute the server and port you are trying to verify. If successful you should see something like:


Type ‘Q’ and press return to tell the mail server you’re done.

For a IMAP (port 143) you should get something like:

*OK Welcome

Type ‘C logout’ and press return to tell the mail server you’re done.

For POP3-SSL or IMAP-SSL you need to use a different command. For example to test if you can get access to Gmail IMAP try:

echo "TAG LOGOUT" | openssl s_client -connect imap.gmail.com:993

For Gmail POP-SSL try:

echo quit | openssl s_client -connect pop.gmail.com:995

If you get a message like:

Warning: stream_socket_enable_crypto(): Peer certificate did not match expected

And you are using DreamHost take a look at the following DreamHost support article:


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.”


If your images are showing up with 0 height/width you have likely run into a PHP bug. There was a bug introduced in PHP 5.6.24 that causes the image size process to fail for some images (i.e. generating the alternate sizes specified in Settings -> Media).

If you can roll back PHP to 5.6.23 or forward to 7.0.x that will fix the issue.

If you don’t control what version of PHP is on your server you can change the image template Postie uses. Go to the Image tab in Postie settings and look for the Image Template setting.

The default is:


Change it by removing the height and width attributes:


For those interested the bugs are listed here: https://bugs.php.net/search.php?cmd=display&package_name[]=EXIF+related

Simply put the url in the body of your e-mail.

Make sure that you send e-mail formatted as html (richtext), and set postie to prefer html messages (in the message tab of the postie settings)

There are 2 features that can be used to remove signatures.

The first one is the “Signature Patterns” setting. This is a list of regular expressions (RegEx) that are used to specifically look for signatures. These work best with the “plain” “Preferred Text Type” setting and if your email come from a variety of sources, but you may need to play with the RegExes to meet your needs.

The second method is the “Text for Message End” setting. This is a word or phrase that indicates the end of the post and that it and everything after it in the email should be ignored.

For example I get a newsletter that always has the text “I hope you enjoy the post.” after the real content. If I put that in “Text for Message End” everything from that text to the end of the email will be ignored.

This method works best if you have a single email source such as a newsletter.

Make sure you set the preferred text type to html

If your posts are blank except for attachments it is likely that you have your “Preferred Text Type” setting set to “plain” and you are using one of the following email clients:

  • Apple Mail on iPhone/iPad
  • SquirrelMail

When you send an email your client has the option of sending plain (unstyled) email, HTML (styled) email or both. In the case of the above email clients they only send HTML email in some cases and if Postie is set to look for plain it won’t find any content. The fix is to turn on the “Text Fallback” option.

If you are sending email from one of the email marketing websites to your site via Postie you may notice that the formatting isn’t the same. There are 2 possible reasons for this:

Your WordPress theme conflicts with the styles you assigned when building your email.

In this case you will either need to change the style of the email or the theme. You might be able to add some additional CSS via a plugin like Simple Custom CSS.

Your email does not have inline styles

If your email depends on external or internal stylesheets Postie removes these in order for the resulting post to be valid for WordPress. All the email marketing site recommend that you use inline styles for greatest email client compatibility and this works best for Postie as well.

MailChip in particular has a nice setting to automatically make all the styles inline. See http://kb.mailchimp.com/campaigns/ways-to-build/use-the-css-inliner

Constant Contact CSS recomendation: http://support2.constantcontact.com/articles/FAQ/1095

MailChip also provides a free tool for converting your HTML into inline style. Make sure you copy the entire html source then go to http://templates.mailchimp.com/resources/inline-css/

Postie creates a placeholder post with the title “tmptitle” when receiving your emails so that it has a place to store any attachments before starting to process the content of the email. So if something goes wrong these get left behind.

Things that might go wrong in the order of likelihood:

PHP ran out of memory. There should be a message in the web server logs. This is often caused by a very large attachment in an email. You may need to log into the email account and delete the message. See this article on how to adjust the amount of memory allocated to PHP.

PHP ran out of time.There should be a message in the web server logs. This is typically because there are either a lot of emails (100s) or your email server is slower than average. You can use the “Maximum number of emails to process” setting to limit how many emails are fetched at one time. You might also be able to increase the amount of time PHP allows a script to run by changing the max_execution_time PHP variable. Contact your host for instructions.

A bug in the image library. This one is frustrating because there is no error message anywhere, but some hosts seem to have a buggy version of the software that resizes the images.

A bug in Postie. Doesn’t happen very often, but it is possible. If this is the cause you will see a PHP error message in your web server logs. Please post the error message in the support forum and I will get it fixed.

A bug in a Postie AddOn. If it is my AddOn send a message to help@postieplugin.com. If it is your AddOn it is up to you to fix it 🙂 If you’re having trouble post in the forum and I will try and help.

A bug in another plugin. Most plugins don’t think about posts being created somewhere other than the post editor so sometimes there is an incompatibility. In general most plugin authors want their plugins to work for you and will create an update to fix things. I am always happy to work with another author to ensure things work well together.

Using the Apple Mail app on iPhones and iPads to send pictures to Postie results in only the pictures showing up with the text missing. This is because by default the mail app does not send a html version of the email, only plain text.

Starting in version 1.8 Postie now has the option to “fall back” to the other “Preferred Text Type” just change the value to “Yes” click Save and you are good to go.


If you are not seeing any thumbnail images being generated you should check your PHP version. There was a bug introduced in PHP 5.6.24 that causes the thumbnail process to fail for some images.

The fix is to roll back to 5.6.23 or forward to 7.0.x

For those interested the bugs are listed here: https://bugs.php.net/search.php?cmd=display&package_name[]=EXIF+related

This is caused by one of 2 things.

  1. the “from” email address does not match with any of your WordPress user’s email addresses., or
  2. the user does not have permissions to publish

You can set the “Notify on Error” setting to get a detailed message about what is going wrong.

For 1 make sure the email address in the WordPress user matches the “from” email address you are sending from.

For 2 make sure the user has the appropriate permissions that match with “Roles That Can Post”

It appears that Google mail (Gmail) will add a placeholder to the plain text version of your email that looks something like this: [image: Inline image 1]

This will occur for each image inserted “inline” which is the default.This text is actually in the message, Postie is not adding it.The best workaround is to change the “Preferred Text Type” setting to “Html”

WordPress supports a number of file type that you can place in the media library. Postie tries to add each attachment to the media library.

See https://codex.wordpress.org/Uploading_Files to see the default list of supported file types.

If you try to include a file type in your email that isn’t supported by WordPress Postie will be unable to add it to the media library.

You can use a plugin like File Upload Types to add support for additional file types.

WordPress has some challenges with some cameras resulting in picture that are rotated 90 degrees left or right or even upside down!

To resolve this you can install the https://wordpress.org/plugins/image-rotation-repair/ or https://wordpress.org/plugins/fix-image-rotation/ plugin. Both have been tested to work with Postie.

There are a couple possible reasons for this. First, check to see if you can add an image through WordPress’s normal posting mechanism. If not, then check the following:


  • Your server does not have the php-gd library installed. Ask your hosting provider about this.
  • Your wp-content/uploads directory is not writable by the webserver. Make sure that it is.


  • “Use custom image field for images” setting is set to “Yes,” change it to “No.”

If your admin account is linked to bar@gmail.com, and you send mail from bar@gmail.com, it will show up as being posted by admin. If you have a WordPress user named “John Doe”, which is linked to johndoe@gmail.com, make sure that you send emails from johndoe@gmail.com. It doesn’t matter which email address Postie is checking. That is, if you send mail from johndoe@gmail.com to foo@gmail.com, it gets posted as “John Doe”.

If you send an email to your Postie address from an email address that is not linked to a WordPress user, it will get posted as admin.

Due to the fact that some Postie features use the email subject it is possible for conflicts to arise.

For example the subject “Birds // Bees” will end up with a post title of “Bees” because the “//” is used to specify post types and formats. See Override Post Type and Override Post Format. There isn’t much you can do about this unless you control the email subject lines.

Or you have a title like “12-11-2013 Stats for the day” and end up with a title of “122013 Stats for the day” This is because Postie sees “-11-” and assumes you want category 11 for your post. See Override Post Categories.

More commonly you have a title like “Warning: Storm approaching” and end up with a title of “Storm approaching” and a strange category. This is because Postie uses everything before the “:” as a category wildcard. See Override Post Categories.

The following setting in the Message tab can help you control this behavior.


You can turn off the wildcard logic by setting “Match short category” to “No”. This will prevent subjects like “No: We don’t want to” from being matched to the category “Normal”

If you don’t want to set any categories from the subject line set “Use colon to match category”, “Use dash to match category” and “Use square bracket to match category” to No.


Yes. You can create your own function which utilizes one of the filters provided by Postie such as postie_post_before. Two short examples are included in the filterPostie.php.sample file. See also Extending Postie.

Yes. You can create your own function, and use the postie_post_before filter. Two short examples are included in the filterPostie.php.sample file. See also Extending Postie.


It is possible to place images in certain places when using plain text emails by using the #img# directive in your mail text.


Here is a sample plain text email. 
With an image displayed in the middle of the text.

This will generate a post with the first attached image between the two paragraphs.

The number following #img directs Postie as to which image it should use. You do not have to use them in order. I.e. you can have #img3# before #img1# in your email.

Additionally you can specify a caption like so:

Here is a sample plain text email. 
#img1 caption='pretty kitty'# 
With an image displayed in the middle of the text.

Note you can only use the #img# feature if your “Preferred Text Type” is set to “plain”

Some SMS providers supply their own not so useful subjects when going through a SMS to email gateway. You can provide your own subject in the message body by including it on the first line surrounded by the hash symbol (#). Note that you must have “Preferred Text Type” set to “plain” to have any chance of this working.

#my subject# 

The rest of my message

The subject must be on the very first line and the # character must be the first character in the message (no blank lines, spaces or html). You must also set the “Allow Subject In Mail” setting to “Yes”