The value DEFAULT_FROM_EMAIL is the default value. Django uses this in places where emails are sent automatically (for example, error reports prior to ADMINS ). When you call the send_mail method directly, you must specify the from_email parameter. Even if you want DEFAULT_FROM_EMAIL , you will have to import it from django.conf.settings , and then pass it.
My best guess is that Gmail is actually the culprit. As far as I know, Gmail does not allow you to specify a custom sender, because too many people are already trying to use Gmail to send spam, and they want to discourage this practice.
Basically, when your email goes through Gmail's outgoing mail servers, it ignores the custom headers you sent and sending them from your actual Gmail account user. You may be able to get around this by adding a custom from the email that you want to use as the actual sender in your Gmail settings. Go to the Settings section and then the Accounts and Import tab. Find the "Send mail as" section and click on the "Add another email address that you have" link. You can add a new email account that you want to send from there, and it will force you to confirm the email address (therefore it must be a valid email address that can receive).
source share