The Locksmith

By now, everyone who bought Atom Zombie Smasher from should now have received an email with a free key for the Steam version of the game (and if not, email me at and I’ll sort it out). Getting these keys to these people was a bit more involved than I expected, so I thought I’d write about it.

Here’s what I had:

The goal was to send one Steam code to each email address.  I began with making a spreadsheet: Column A had Steam codes, Column B had email addresses. I exported this spreadsheet to the .CSV format, which is a basic text file.

I now had a simple, machine-readable .CSV file with Steam codes & email addresses. I then wrote a quick C# program, “KeySender,” that read the .CSV file and emailed a Steam code to each address.

KeySender took very little time to write.  It was very basic in functionality and cannibalized enormous chunks of code from Atom Zombie Smasher, notably the Report-a-bug feature (to send emails) and the the text file parser (that reads mod files, vignette files, etc).

After a few test runs with dummy info, I plugged all the customer data into KeySender and hit the “Go” button. And off it went.  It was working very diligently, shooting emails with all the pep and vigor of a cold, emotionless robot.  Its little progress counter ticked up, up, up…

And then KeySender started barfing.

KeySender now hurled out error messages about failing to send the email message, over and over again.  I shut it all down and took a look into KeySender’s innards.  I couldn’t find anything wrong with it.  No, the root cause was something more sinister: my email host flagged me as a spammer.

I use Gmail for my correspondence.  After some digging around, I discovered Gmail has a safeguard that limits how much email you can send in a given time frame. And if you breach that limit, you are locked out of your email account for 24 hours!

And so, my beloved KeySender, with its cursed efficiency, barred me from my own blendogames email account for 24 hours. Oh KeySender, you rascal.

So, next time I do this I’ll have to find another method. Before making KeySender, I was at first thinking of making a web page where the user would input their order data to receive their Steam code. But, I disliked forcing people to dig through their email history, find their order data, punch the data into a website - that’s the opposite of a smooth experience. Secondly, the only way of making absolutely sure all these people get contacted is through their email addresses, so I would’ve been in the same 24-hour-send-limit boat either way.

Anyway, in closing: I forgive you, KeySender.