Set up reply by email with POP3 polling

So you’d like to set up reply via email support for your Discourse forum.

:mega: Reply via email is pre-configured and enabled by default on all discourse.org hosted sites. The guide below only applies to those self-hosting.

Good news! Unlike outgoing email, which is completely unsuitable for typical consumer mail services like GMail, Outlook, Yahoo Mail, etc, incoming reply via-email tends to be extremely low volume. Unless you have a truly massive forum with a zillion people replying to notification emails, you are probably safe using, say, Gmail.

:bell: Alternately, if you aren’t comfortable using GMail for this, you can set up your own incoming email service using Configure direct-delivery incoming email for self-hosted sites

So here’s how to set it up using GMail as an example.

  1. Create a new GMail account. If you do not set up a completely new email account old emails will be synced via POP3, causing unforeseen issues and sending bounce notification emails!

  2. Assign the new account a username like discourse-replies@example.com or in my case, replies@example.com (if you are using a normal GMail account replace @example.com with @gmail.com here). Give it a strong password.

  3. Log in to this account via http://mail.google.com. Accept the terms of service, enter the CAPTCHA, load the default web interface. Maybe send a test email, receive a test email. Kick the tires.

  4. POP3s access is off by default in Gmail, so turn it on via Settings, Forwarding and POP/IMAP:

    All incoming emails will be retained by default – but you can tweak as needed.

  5. Visit the Discourse settings and check the Email tab.

  6. Change the following settings:

    • reply_by_email_address enter replies+%{reply_key}@example.com
    • pop3_polling_username enter replies@example.com
    • pop3_polling_password enter the password of that email account
    • pop3_polling_host set to pop.gmail.com
    • pop3_polling_enabled set to true
    • reply_by_email_enabled set to true

There is a certain amount of polling that goes on for this account, but we’ve set it to a low, safe volume – you can configure the polling interval via the pop3 polling period setting.

We do assume that your email service supports plus addressing aka address tags, so check that before starting. GMail obviously does.

If everything is working, you should see the footer of all notification mails now tell you that you can reply either by visiting the website, or replying via email:

To respond, reply to this email or visit {topic URL} in your browser.

If things aren’t working:

  • check the /logs path on your Discourse in your web browser and look for email related error messages.

  • log into your mail account using your web browser and check for any errors or notifications.

Forwarding mail sent to additional addresses

Let’s say that you are polling emails from the “replies@your.domain” account and you want to setup incoming emails for “help@your.domain” and “dev@your.domain”.

You will need to forward all the emails sent to “help@your.domain” and “dev@your.domain” to “replies@your.domain”. If you are using GMail, they have a great tutorial on how to automatically forward incoming emails to another account .

Then, Discourse will periodically poll emails from the “reply@discourse.org” account and deliver the emails to the corresponding category, group, topic or message.

Potential Issues

  1. We have seen difficulties when signing up for a GMail account from a different country than your server is located in. For example, if you create the Gmail account from the UK, but the server is in the USA.

  2. If you are using a GMail account (e.g. @gmail.com) or a Google Apps mailbox (e.g. a Google mailbox @yourdomain.com), you will need to create an app password for your account, which is used in place of your account password in step 6.

See also: Troubleshoot reply by email ✉

ℹ Since May 30th, 2022, the **Access from less secure apps** Google option isn't supported anymore, so you need to use app passwords, and enable the two-factor authentication to do so.
86 Likes

This is awesome for smaller sites who are using their own SMTP to send email and a normal GMail account to handle incoming emails.

I’m using this and in theory it’s awesome, but in practice now with GMail enforcing DMARC and SPF, one needs to be careful and note that delivery may fail or the email may be marked as spam because of the way discourse sets the envelope-from, from and reply-to headers. There is a solution but it would require discourse to allow the site admins to separately set the envelope-from and reply-to headers (currently discourse sets them both to the same). It’s described here: Separate envelope-from and reply-to email addresses to avoid DMARC failure