Mail Queues™

Send mail using SMTP without exceeding the the rate allowed by your mail provider(s). Mail can be sent using multiple user logins/passwords to give fault tolerance and make each mail message somewhat unique so that it is less likely to be flagged as SPAM/UCE by either your or the downstream mail providers. Messages can be automatically reset when the plugin detects Non-delivery messages (NDRs) returned from mail sent by the plugin.

Email can be throttled per outbound SMTP account. Limits can be set for maximum number of recipients per hour and per day.

Non-Delivery Processing

Non-Delivery (NDR) messaging processing note: plugin should recognize common non-delivery formats. But, because non-deliveries are free form, and can be highly customized or specifically localized the plugin may not recognize the message. If you provide a sample non-delivery message we can make the plug-in a little smarter.

Feature List

  • Sends mail via SMTP
  • Send mail no faster than the configured number of recipients per hour/day. Keeps you in complience with your providers email sending limits.
  • Configure multiple SMTP accounts to use for sending messages (Gmail, MSN, Go-daddy, etc)
  • Process non-delivery messages and automatically resend messages
  • Keep record of sent mail messages so that you can prove to your provider you didn’t send SPAM
  • Automatically stops sending email when errors encountered, auotmatically restarts after configured period of time
  • Dashboard display of mail sending statistics


  • Using multiple email accounts makes it less likely that your email will be incorrectly flagged as SPAM by downstream providers
  • Use in combination with other email newsletter, sending and formatting WordPress plug-ins
  • Reduces non-delivered mail due to invalid SPAM flagging or exceeding near or downstream provider sending/recieving limits

Download Mail Queues from WordPress Plugin Directory

If you find the Mail Queues plugin useful, if it saves you time, if it makes your customers and your hosting provider happier, please make a small contribution to the continued support and development of the software.


Screen Shots

Mail Queues Setup List


Setup new SMTP mail Queue


Message Queue Test Message Generation


Stalled Mail Display


Non-Delivery Processing Options, Debugging and Testing Options


Queuing and Dequeing Options, Non-Delivery Processing Options



Message Queues Status Display



61 thoughts to “Mail Queues™”

  1. Thank you very much for this wonderful plugin! It works like a charm. Question: How does the scheduling work? Does it use the wp_cron, ie does the sending of emails depend on the site being accessed by users?

  2. I’ve just install the plugin and have questions about the setup and go-daddy. You mentioned it will work and I wonder what setting you used to configure the SMTP to connect to go-daddy. I send 2 test emails but I still haven’t received them it says they’re queued but how long does it take to send them? I appreciate any help you may offer.

    1. The emails should send almost immediately. You’ll need to double check the godaddy help pages for the server mail configuration that matches the type of host you have. They place some restrictions on which ports you can/must use to avoid their hosts being used for spamming.

  3. Hi there, I am also using this plugin with Subscribe 2. It seems to be working, but they also seem to be sending out at a very slow pace. I’m not that well versed in this stuff, but what settings could I safely alter to send emails out faster? Current settings are: max msg attempts: 3, msgs per batch: 1, dequeue interval: 30, max errors: 0, disable time: 60 min. My max recipients per hour in the queue itself is 500 (I checked with my host and can send up to 700/hour) and 3000 per day. Thanks so much for your help!

    1. Experiment with the settings until you start seeing a problem. Increase the messages per batch to 5, then 10 then 15, etc. And decrease the dequeue interval down to 5 or 10 seconds, or even lower. You might also want to adjust the max number of errors up a tick just in case.

      If you see a problem it’s likely that it will be a result of your sender reputation with your recipients providers. AOL, Google, MSN and others have heuristics that try to determine if your a bad actor. When the heuristic decides too much email traffic from you they will start rejecting your email. Lot’s of things go into the heuristics, and we don’t know all of them. One thing you can do is check your SPF and DKIM setup to be sure everything is correct. Your DKIM needs to be looked at with human eyes to see if it is correct and matches your service provider configuration. SPF is very easy to check using a tool like I took a look a quick look:

      mxtoolbox spf check

      It shows that the SPF can be tightened up a little bit. The ‘?all’ indicates to the receiving email server that it receives a message from any server on the planet, and the email has a from address that matches an email address in my domain, it’s valid.

      As a side note (and shameless promotion) check out another site we built and support, (, they could make your some Dachshund Bling to sell in your store.

      1. Let me know if you need help.

        Also, if you want to look into an alternative solution check out mandrill and sendgrid. We use both on some sites and they take care of the message queuing and delivery issues. If your usage stays under the threshold for free service it can be a great deal. They both can be a little technical to setup so if you run into a problem I could help you get your web site configured over a couple hours. Happy to exchange work for cash, or perhaps some free advertising for sparkle-gear in your blog and emails 😉

  4. Hello. I am using your Mail Queue with Subscribe2. The Subscribe2 plugin sends e-mail notices in plain text when a new post is added to the site. Many of these posts contain Chinese characters. When I use the Mail Queue at the same time, it looks like it strips out the encode information for UTF-8 and the Chinese characters display as “??????”. I know this is coming from the mail queue because when I disable it the e-mails send fine. How should I edit the code so that the header information for UTF-8 either gets added back in or doesn’t get lost?

  5. Ok, it looks like the cron finally kicked in, but I am missing something as far as set up goes … the emails are going into the queue, which is great. but, when they come out, it looks like the “To” address is being replaced with nothing at all … I have unchecked log all, made the test/debug fields blank. The emails are not getting sent and I am not sure how to proceed. This is what the mail.log file says (I have replace actual email addresses). :

    >— Overrode TO, instead of used address >— Overrode TO, instead of used address >— Overrode TO, instead of used address

    The error log would indicate that my server is rejecting the emails because they do not have a recipient address.

    Why is the TO being overridden? How can I reset that?


  6. Hello, congratulations for the plugin. I write because I have a problem. I have configured 4 accounts (gmail, hotmail and local) and all shipments (or almost all) end in “error” What have I done wrong? Report “No unsent messages in queue not being sent becuase of too many failed attempts” Can you help? I can not understand the log

  7. Odd issue with the cron. The queues list says: “Message queues will be checked again 0 seconds from now. That is after March 4, 2013, 9:45:07”

    That was the time the plugin was installed. Using ‘Core Control’ plugin the cron for do_mail_dequeue is shown as being a once-off. If I manually run it from there then it is fine but what could be stopping this updating to the next 10-minute run?


    1. Looking through the plugin code it looks like the ‘once_off’ is by design. However that means the issue is now with the plugin not actually updating the next scheduled de-queue.

      Any ideas what I can do to test?! It works when run manually, the issue is only with it not updating the time for the next run.

      1. I just installed Mail Queues this morning and see the same message about “Message queues will be checked again 0 seconds from now. That is after May 5, 2013, 5:45:07”

        All of my test messages and other messages are being queued, but the cron does not seem to be running to actually send them. there are 3 test messages from Mail Queue itself, plus two more from other WP mail functions.

        I installed mail queues v 1.0.8 under WordPress 3.5.1 I have deactivates all other plugins, and even gone back to the 20-11 theme. I tried deactivating mail queues and re-activating, but the messages are still in the queue, and the “Message queues will be checked again 0 seconds from now. That is after May 5, 2013, 5:45:07” is still the same.

        I have checked the settings over and over, but I do not see a place to say “hey cron, get a move on”. I have left the queueing and dequeing settings at the defaults.

        I would really like to use this plugin; it’s the only thing like it out there, but it needs to actually send messages and not just queue them.


      2. It is likely that the to is being overridden because the test server setting is set to the product server. That tells the plugin to send all the email to the test address instead of real recipients

  8. Installed v1.08 of the plugin, and having a major issue! Queue table is created with msg_from NOT NULL column, however when inserting to the table in the pbci_mail_queue msg_from is not set, therefore I get the error WordPress database error: [Field ‘msg_from’ doesn’t have a default value] whenever testing or sending and email!

    Is this a known issue? Of this version. Not sure it matters, but I’m running it on WP 3.5.1

    1. Haven’t heard of this issue before.

      First thing to check is why a from isn’t being set. Are the plugin and WordPress mail fields all configured properly?

      1. Yup, if you mean the admin email, yes that is setup. And i’ve also setup a queue before testing (gmail’s smtp).

        I will try on a clean install, but just by looking at the plugins code you can see the issue, the create table set’s msg_from as NOT NULL, the pbci_mail_queue method does not set the column when saving the email to the queue table, unless there’s some sort of filter/action that is meant to populate it beind the scenes that I may have missed?

        as a test I set the column as nullable, disabled the plugin, dropped the table manually, enabled the plugin, table was created with column as nullable, ensured a queue was set (which was) and then I started having [Field ‘queue_id’ doesn’t have a default value]

        At this point I gave up and uninstalled it completely! 🙁 Shame cause I really wanted to be able to use it.

  9. I use this plugin, and for some reason it keeps sending to SMTP old emails that were already been sent. I tried to delet all Stalled Mail, but the queue is being regenerated and I don’t know why. I disabled the plugin of post notofication, that adds mail to queue, so no mails should be added. I couldn’t find any way to reset/delete the queue, couldn’t even find a way to view the queue. So it just keeps sending old mails over and over again to the subscribers. How could this be handled? Thanks ahead

    1. Check the mailbox that is used to collect the non-delivery messages. It might be that the non-delivery messages are causing the mail to be re-queued?

  10. I still get an error in the updated plugin and it doesn’t appear anything is coming of the queue. It looks like error is in line 425 and 1349. I’m using version 1.0.7

  11. Hi, love your product! Since automatically updates to WP 3.5 a couple of days ago, I keep getting the following error message: “Warning: Missing argument 2 for wpdb::prepare(), called in /home/deepgree/public_html/wp-content/plugins/mail-queues/pbci-mail.php on line 471 and defined in /home/deepgree/public_html/wp-includes/wp-db.php on line 990”

    Is there a fix in the works via an update or is there something I can do to address this? I appreciate any assistance you can offer.

    Best regards, Greg Basco

  12. I’m trying to test mail queues to send email through as my ISP. I keep getting failures and can’t figure out why. Is there a log file or something that would help to debug or troubleshoot the connection.

  13. Setup today on WordPress 3.4.2 and it seems to be working great. The only thing I saw that could use improvement was in the Message Queue Status where it shows last success and last failure, it uses server time rather than taking into account the timezone set in the WordPress settings. Great plugin, thanks.

    1. I agree, this would be a good improvement. The only question is the mail headers usually have UTC time, so if we show local time does it make it harder to search the incoming/outgoing messages to find an error when it happens?

    1. It deactivates when message counts reach the limits, too many non-delivery messages appear, or the server actively refuses the connection. You can change the code to ignore these conditions, or you can see what is causing the errors.

  14. I tested the settings. It worked. Then, I published a new post and it seemed like the email to subscribers completely bypassed the plugin. Is there a difference between posting (automatically notifying subscribers) and actually emailing? I have MailPress plugin installed.

  15. I tested today with a gmail account and look seems no email is send “5 unsent messages in the queue ready to send” I made ​​5 different email addresses tests.

  16. Hi,

    I used the plugin last month and it works perfectly, but now that I’m supposed to send the monthly newsletter it stop working at all. I’ve tryed using different mail servers and deactivating other plugins but still no working.

    I don’t know is there was a change or something but is no longer working.

  17. Excellent plugin – works perfectly for me, so I’ll send a donation soon. Just one thing. I can’t find the mail log file anywhere amongst my site’s files. What will it be named, and in which directory will I find it?

    Thanks, Andrew.

  18. Thanks for the quick response. To save a lot of back and forth, if it is any help if you contact me by mail I can give you details of an email account to try forwarded as well to another email of your choice. Error on mail queue screen is: Check server and port in Mail Queues Settings Page. POP3 pass: Authentication failed [-ERR [AUTH] Username and password not accepted.] Have checked carefull userneme and password several times. Account works fine via outlook.

  19. I’ve installed the plugin for use with Subscribe2. I see emails are sent to the queue but they don’t get sent (I’ve created 2 different mail queues). What’s needed to trigger sending and/or clear the queues?


    1. After much testing it seems Mail Queues doesn’t work for a WordPress blog that is password protected by .htaccess. Is there a workaround?


      1. Could be the mail log file? Double check that your .htaccess allows the mail queue plugin to write to the log file. Or modify the plugin code to not write to the log file.

  20. Hello,

    Firstly, thank you for your (free) plugin.

    My SMTP server requires the use of ‘AUTH’ to send mail. How can I configure your plugin to use this and how can I enter the AUTH settings?

    Many thanks!

  21. If I use this plugin am I able to disable the e-mail server functions on my web server? I’m thinking if it sends mail by SMTP the same way an e-mail client like Thunderbird does then there is no reason to have any active e-mail services and that would close down a lot of vulnerabilities.

    1. The Mail Queues plug-in does not care where the SMTP services are running. The SMTP connection could be to your own mail server, or your ISPs, or a random third-party like gmail.

      My experience is that email is more likely to be blocked as SPAM/UCE if your are using a local email server. The folks who are running the larger SMTP server put more effort into maintaining their server reputation than most of us could do on our own. Running your own private SMTP server is great because you get control, but problematic if you are running in a shared server environment, or don’t have the time/expertise to manage all of the details that keep your mail server reputation as a valid sender.

      Of course when you use your ISPs mail services, or a third-party mail service you must behave by additional rules that provider sets. Often these rules include send rate limits, and perhaps having to respond to MTA generated non-delivery reports. That’s why you want a plug-in like Mail Queues.

      1. Hi Trying to use mail queue with my blog and hit a problem in that it requires smot authorisation which I unfortunately can’t set with your plugin. Mail is hosted by 1and 1. My outlook emiail client which works with this email account has authorisation turned on and uses port 587. I sthere any other information that will help?

        Is there a code mod I can do to solve this problem



      2. I’m guessing you meant smtp authorization? If that is the case the plugin should work. My test system is sending and receiving via gmail and hotmail, both accounts use 587 and require passwords. I’m not sure how to go about finding the cause of your issue?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.