This may just be a shot in the dark but what is the MAIL_USE_TLS setting in your configuration? I also had issues with mail delivery to start with and it turned out that the problem was that I thought that setting was for SMTPS, but it's actually whether to use STARTTLS. Granted since you're using port 587 either value should work, but Mailgun might block unencrypted submissions.
Also, I think almost all email delivery happens from the celery instance. This was also a mistake I made to start with because I didn't prioritize getting async up and working (turns out that's very important).