I have the same problem. It’s not caused by your implementation. If you’ve got the free account from Sendgrid you’re sharing an IP address with many other users from which sendgrid sends your email. If this IP address has been abused by another user you can end up being blacklisted. In my case I see that mails sometimes are blocked and sometimes not because the IP address is also changing. I’ve mailed sendgrid about it and their only solution is that you take a payed account because then you get your own IP address.
Conclusion: The sendgrid free account sucks since you do not have any guarantuee that your mails arrive at their destination.
Perhaps it helps you a bit further. Here the answer I got from Sendgrid on this subject.
From Sendgrid SendGrid)
Dec 19, 11:16 MST
Greetings from sunny Denver, Co.
Thanks for contacting the SendGrid Support Team.
Sending from a shared IP is always going to be subject to blacklists as multiple companies send mail from one of those IP. The solution, however, is to SendGrid a dedicated IP so that you can be in complete control of your email reputation. Please let me know if you have any questions or concerns.
Thanks,