Start a New Topic via Email ✉

If you have already set up reply via email, or you are on a hosting plan that pre-configures your incoming email, you’re now ready to set up Starting a New Topic via Email.

Site Settings

The incoming emails feature is globally controlled by these 3 site settings:

  • email_in: this is the only setting that must be enabled for incoming emails to work.
  • email_in_min_trust: the minimum trust level required for users to send an email to Discourse.
  • enable_staged_users: create staged users for unknown email addresses.

What are staged users?

In order to support incoming emails from anyone, we needed a way to create user accounts on the fly.
Unfortunately, we couldn’t use normal user accounts. They would start receiving digests and it would prevent people from signing up with the same email address (which was confusing since they only sent emails).

That’s why we came up with the idea of staged users. They are special user accounts in Discourse.

They can’t be mentioned or searched for, they will never receive a digest and they can only be notified of and reply to the topics they started or were invited in.

If the user ever wants to create an user account using the same email address, we will promote the staged user to a normal user.

Category vs Group

So now that you have enabled incoming emails, you need to decide whether you want them to end up into a category or a group.

Why use a group?

  • Using a group is useful if you want to set up a support-like workflow.
  • Sending an email to a group will create a message sent to all the members of that group.
  • These messages will appear in /my/messages.
  • Anyone can send an email to a group (since it’s just an email behind the scene)
  • Any member of the group may read, reply, delete or archive the message.
  • All member of the group have their own read tracking state.

Why use a category?

  • Using a category is useful if you want to simulate a mailing list.
  • Sending an email to a category will create a topic in said category.
  • Anyone with access to that category may read and reply using the web interface or via email.
  • Emails sent to a category must respect the category’s security settings.
  • Emails sent to a category must respect the email_in_min_trust_level site setting.
  • You may disable staged users on a per category basis.

Setting up incoming emails on a group

To setup incoming emails on a group, go to your groups page by clicking the “groups” link from the main menu, then click the name of the group (or create a new one).

If you have created a new group, at the bottom of the form, there should be a field named Custom incoming email address. If there isn’t, make sure you have enabled the email_in site setting.

Enter the email address you want to associate to that group and click the Save button to save your changes.

If you are editing an existing group, click the group’s Manage tab, then click the Interaction link from the left side menu. You should see a Custom incoming email address field near the bottom of the form:

If you are not seeing the field, make sure that you have enabled the email_in site setting. Enter the email address you want to associate to that group and click the Save button to save your changes.

You’re done :tada:

Setting up incoming emails on a category

To setup incoming emails on a category, you need to go to the category’s page (eg. /c/<category_slug>) and click the Edit button.

Then, click the Settings tab on the Edit category modal that shows up.

There should be two fields “Accept emails from anonymous users with no accounts” and “Custom incoming email address”. If there aren’t, make sure you have enabled the email_in site setting.

Enable “Accept emails from anonymous users with no accounts” if you want staged users to be created when an incoming email address does not exists yet.

Enter the email address you want to associate to that category and click the Save Category button to save your changes.

You’re done :tada:

For troubleshooting tips, see the Logging and Errors section of this topic.

35 Likes
Can I start a new topic by sending an email message?
Understanding email in functionality
Post without signup?
Good use cases for groups (to better understand groups vs categories)
When site require approvals for users, email replies do not get sent to staged users
How to configure group email address
How to Use Discourse as a Private Support/Ticket System
Creating a staged user with an API call
Start Topic via E-Mail with different domain
Setting an incoming e-mail address for the staff group
Configuring alternative incoming email address for hosted account
Start Discourse by Mail
Communicate with people that are not logged in through email
Set up Reply via Email Support :e-mail:
[PAID] Auto create new topic when I publish a video on YouTube
Set up Reply via Email Support :e-mail:
Who is Discobot?
How to use aliases in iRedMail for categories with incoming email feature enabled
Plug an email adress on a Discourse project
Anonymous form that creates a topic
How to go about hosting a design contest?
Can I start a new topic by sending an email message?
Can I start a new topic by sending an email message?
Discourse 1.9.0.beta15 Release Notes
Registering unregistered users on first email a la mailman?
Private support categories: staged users can email in, but not registered users
How to Use Discourse as a Private Support/Ticket System
Can I start a new topic by sending an email message?
Creating a topic via email without write access to the category?
What is a staged user?
Category configuration option : mirrors a mailing list
Category configuration option : mirrors a mailing list
Good guide on how to use discourse via email

Custom incoming email FORMAT

Superb #howto . Hard to find this article - maybe because its newish. I ran into some UX / formatting issues that @mpalmer helped me iron out. When filling out the “Custom incoming email address” field, you need to stick with certain email address’s.

I have a site hosted by discourse and I found the formats to be any of the following:

<site_name>@<domain>
<site_name>+whatever@<domain>
whatever@<site_name>.<domain>
1 Like

What are you calling “<site_name>”?

I dont know the right term.
<site_name> = the third-level-domain piece of the URL

ex: myponysite.trydiscourse.com
<site_name> = myponysite

Do we create a random email at this domain?
Or do we provide the name of the account it would come in from?

Have just set this up - absolutely brilliant.

A note to anybody wondering how to configure pop3 polling - see here (a single account is configured for polling, and all “start a new topic via email” accounts need to forward to the polled mailbox).

7 Likes

Trying to understand what this means when staged users are enabled: Am I right in assuming that staged users are exempt from these requirements? In other words: which setting takes precedence: “allow staged user to post to this category” or “don’t allow staged user to post to this category due to security/trust level settings”?

If emails from staged users are not exempt from category security setting, the question is: are they included in “Everyone” in those settings? (Normally “everyone” means “every forum user”, but do staged users count as such?

This is a lifesaver. I have successfully set up a custom email for Category1:

reply+category1@mydomain.com

with reply@mydomain.com being the polled POP3 account. Slick!

Question is: what is the “default” email for starting a topic?
IE, do I have to specify a custom reply+category#@mydomain etc for every category?
Or does discourse accept repy+<category_slug>@mydomain by default?

1 Like

It’s the category’s email address. So, in your case it’s reply+category1@mydomain.com

5 Likes

I’m not having success with ‘default’ using the slug… I have had to add the custom email address to each category: reply+category@mydomain.com

This works, but with more than a few categories, it could be cumbersome. Thanks!

1 Like

Yeah, it doesn’t work without configuring a custom email address for each category.

5 Likes

I’ve been playing with this and have some empirical observations:

If the category does not accept anonymous user posting then a staged user can’t create a post even if they meet minimum mail-in trust level, belong to a group (built-in or custom) that has access and have been activated. Before I found this post I had only got this to work by firing up a rails console and “unstaging” the user.

I hadn’t equated anonymous users with staged users.

4 Likes

another way to simplify category email addresses is through setting up a bunch of email forwarders on your email account.

example:
your email account: reply@yourdomain.com
category email: categoryname@yourdomain.com
forwarder: categoryname@yourdomain.com to reply@yourdomain.com

basically, you just need to make sure that whatever email you choose for a category, will end up in your discourse mailbox (reply@yourdomain.com).

2 Likes

Is there any way to send multiple emails to a category that all end up as replies to the same topic?

I have a use case where I want to send scheduled email reports and alerts into discourse and it would be very useful to group them by subject. The default behaviour is to reject the email stating “title has already been used”

There was some talk about it back in 2014, Emails in with already-used subject should append to that topic

Just some way for the site admin to tell discourse “this mail address belongs to a bot” to change the behaviour for that specific user would be helpful, since bots and scripts won’t be able to deal with the dynamic reply-to addresses that discourse generates.

6 Likes

I discovered that the “Category mirrors a mailing list” setting will add replies to an email thread to the same topic.

Also see this topic: What does "Category mirrors a mailing list" do?

3 Likes

This is a very interesting feature! A bit overwhelming in my current newbie state, but I will remember it for the future.

Great stuff!

1 Like

Really useful (especially “Category vs Group”) thank you. Could you add the table of content ?

3 Likes

Can discourse be configured to accept repy+<category_slug>@mydomain?
Configuring a new mail id and appropriate forwarding for each category seems cumbersome.

1 Like

I use hyphens to route traffic to different categories.

  • support-project@example.org
  • info-project@example.org
  • help-project@example.org

And these are all aliases going to the mailbox Discourse checks for incoming mail.

3 Likes

Is it possible to somehow add a tag to a topic I create in a category via email?

1 Like