We are using Rails 3.0.X and running our web app on Heroku. We are using Google Apps Free edition which runs Gmail as our email service. Our app allows end-users to sign up via email. After which, we send the user an email verification to prove that he owns the email address he registered with.
Today, several users signed up at once, and instead of Gmail sending out the verification emails, it marked them as spam. As quoted from their info page:
Here at Gmail, we work very hard to
fight spam. This includes not only
spam coming into Gmail but spam being
sent out from Gmail as well. Believe
it or not, spammers sign up for Gmail
addresses in large numbers just to
send out spam! To help do our part to
keep this junk off of the internet, we
bounce mail that we are confident is
spam. Unfortunately, we aren’t perfect
and will occasionally bounce
legitimate mail. We apologize for the
inconvenience.There are a number of ways you can
inadvertently confuse our automated
spam filter, by sending
suspicious-looking or spammy text, for
example. By far the most common
problem is sending mail cc/bcc’d to
large numbers of recipients (“bulk
mail”) to send out newsletters,
invitations, etc. Since spam is sent
to many recipients, our spam filter is
slightly more likely to confuse bulk
mail with spam.
I sent them an email explaining our problem. And how this could hinder our business if our verification emails are not sent out. I have yet to hear from them.
In the meantime, is it wrong that I am using Gmails email server to send out emails? Should we use our own mail server rather than the gmail server? I notice that Heroku has an addon called Sendgrid. Should I be inclined to use this service for sending verification emails instead?
Generally i find that if you can do it with a heroku addon then you should do that. The free option for sendgrid allows 200 mails a day which is probably enough for you – if it isn’t then you’re doing well and can afford the upgrade 🙂 In my experience money spent on heroku addons is well worth it compared to the cost of developer time in seeking an alternate solution.