Looks like the username is wrong. THis is the config from one of my apps using Sendgrid:
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=$MY_SENDGRID_API_PASSWORD
MAIL_USERNAME needs to be literally apikey not an actual API key :)
This is done as most apps don't actually require a username and API key, it's all done with the API key (a token).. and the 'username' in this case just tells sendgrid that authentication should be done with the API key (which in this case, would be the password).
Cheers..
Ian