Trying to invite a specific user and cannot

(Alan C. Oehler) #1

I’m having an interesting problem. Yesterday I did bulk invite by uploading a CSV file. Afterwards, I got a message that it had succeeded except for one entry:

Error inviting '' -- Validation failed: Email is not allowed.

(in which I’ve put a fake name and domain for the purposes of this post.)

I looked in the list of users and the address did not already belong to a user, and the address was also not present in the Suspended, Blocked, and Suspect users lists.

So I tried to invite him manually and I get this response:

Sorry, we couldn't invite that person. Perhaps they have already been invited? (Invites are rate limited)

I waited overnight and tried again to see if the rate-limiting was stopping me, but I just get that message again.

Anything I can do to let the poor guy get an account short of telling him to get a different email address?


New user invitation (not file) failing for some users
(Mittineague) #2

I can think of two things to check, both at
Admin -> Settings -> Login

enable local logins
Enable local username and password login based accounts. (Note: this must be enabled for invites to work)

email domains blacklist

A pipe-delimited list of email domains that users are not allowed to register accounts with. Example:|

(Arpit Jalan) #3

Also make sure that email is not blocked, see Screened Emails /admin/logs/screened_emails.

(Alan C. Oehler) #4

Thanks for your help! Mittineague, those things were all set properly.

techAPJ, I looked there and found that there was a screened email in the list that was very similar to the one that was being blocked – but not identical. They differed only by the first letter. So I removed the similar one from the log, and tried my invitation again, and this time it worked.

(Mittineague) #5

Yes, Discourse uses Levenshtein distance on emails

(Alan C. Oehler) #6

Wow, really? Doesn’t this bit you every time there are two or more people that share a very common last name but different first name, say Bob Jones, Carol Jones, and Dexter Jones. I bet it’s not that uncommon in a large user base

(cpradio) #7

You can alter the setting
levenshtein distance spammer emails

(Kane York) #8

The check is only applied to emails identified as belonging to spammers, so this hasn’t really been an issue.

(Alan C. Oehler) #9

In my situation it seems to have been applied to a deleted user, who used to work here, and I manually deleted him Monday morning.

In Settings -> Spam is says my levenshtein distance spammer emails setting is 2, but the email matched just one character.

(cpradio) #10

What method/process did you use to delete him? As it seems the process you used, added him to the email blacklist… which is reserved for spammers.

(Alan C. Oehler) #11

cpradio, I believe I just went to the Users list, clicked on him, and scrolled to the bottom and clicked Delete User. And he didn’t appear in the email domains blacklist on the Settings/Login page. Is there another blacklist somewhere?

(Jeff Atwood) #12

You pressed “delete spammer” on the user, instead of “delete”.

(Alan C. Oehler) #13

codinghorror, I don’t see a Delete Spammer button, where is that?

(cpradio) #14

When you click Delete User, you are presented with this

You clicked the Delete and block this email and IP address button versus Delete only

(Mittineague) #15

Good point. @AlChuck you may want to delete the IP from the screened IPs too.

(Kane York) #16

That dialog should be changed to [blue: Delete only] [red: Delete and block] [grey: Cancel].

(Alan C. Oehler) #20

Thanks for all the help and comments, I understand what probably happened now.

(Jeff Atwood) #21

OK I think I made that change… we have had a number of people accidentally delete / block when they should have just deleted so I support this change. It’s causing confusion.

Hopefully this helps:

    const buttons = [{
      "label": I18n.t("composer.cancel"),
      "class": "btn",
      "link":  true
    }, {
      "label": '<i class="fa fa-exclamation-triangle"></i>' + I18n.t('admin.user.delete_and_block'),
      "class": "btn btn-danger",
      "callback": function(){ performDestroy(true); }
    }, {
      "label": I18n.t('admin.user.delete_dont_block'),
      "class": "btn btn-primary",
      "callback": function(){ performDestroy(false); }

(cpradio) #22

Looks good to me.