Sending a mail from Flask-Mail (SMTPSenderRefused 530)

Do these 2 things to resolve:

  1. Use this link and turn on 'Allow less secure apps'- https://myaccount.google.com/lesssecureapps

  2. Use hard-coded value for email and password and it worked fine. Simply in the file 'init.py', edit the following section:

Don't use os.environ.get

app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = 'yourpassword'

You need to change your Google account settings. On this page, turn on the option to "Allow less secure apps".

As that page says:

Some apps and devices use less secure sign-in technology, which makes your account more vulnerable. You can turn off access for these apps, which we recommend, or turn on access if you want to use them despite the risks. Learn more


While digging into the issues faced, I rechecked the SMTP settings for Google,

Google SMTP settings

Changing the

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'

to

app.config['MAIL_SERVER'] = 'smtp.gmail.com'

did the trick.

Also make sure that the full username is used as Gmail SMTP username, i.e., [email protected] as shown in the image above.

Hope this helps!!!


I also followed this book and get the same problem, after some digging here and there, I found out the root cause of the problem. However, I am not sure whether it will be the same case for you or not.

app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')

As you can see your flask app gets the your email credentials through os.environ.get(), and if you set this environment variables temporarily in your system, in my case Mac OSX, after your terminal session they will be gone, so you need to set them again for the next time you enter the terminal, like below:

export MAIL_USERNAME=**YOUR EMAIL**
export PASSWORD=**YOUR PASSWORD**

I got this error because of this scenario, in order to set them permanently you need to include these variables into .bash_profile file in your home directory.