While there's little Hillary Clinton can to do to expedite the release of emails in the State Department’s possession, there's a number of questions she can answer now as a show of good faith.Continue reading
Hillary Clinton's use of personal email while serving as secretary of state raises serious questions about transparency and accountability.Continue reading
If we do not wish to see our rights to public records entirely erode, now is the time to get serious about protecting public access to official public email.Continue reading
We've updated Congress for iPhone! It now supports OpenCongress legislator email addresses, iOS 8 and has new features for you to check out. As always, it remains free to download on the App Store!Continue reading
OpenCongress has a new feature: email addresses for your representatives. This simple capability has been years in the making thanks to the hoops that our legislators make citizens jump through.Continue reading
It's long dismayed us that Congress doesn't provide an easy or straightforward way to contact lawmakers directly - but all that changed when 150 civic hackers tackled this important problem.Continue reading
The folks who enjoy actively researching the influence behind the election turn to Sunlight's tools like Follow the Unlimited Money, Ad Hawk or our Elections hub page. For everyone else, there's Inbox Influence.Continue reading
Rapportive is a browser plug-in for Firefox, Safari and Chrome that offers further context on the people emailing you by... View ArticleContinue reading
I recently learned (with horror) that a co-worker wrote her blog posts in Gmail, copied the rich text to WordPress, then copy and pasted the generated HTML into our Markdown-enabled blog backend. To be fair, our nerdy authoring tool is a bit much for non-technical users and doesn't really fit into most "normal" workflows. Additionally, she emails her posts to an internal list so Gmail was a natural authoring tool.
There had to be some common ground we could find; blog posts still written in Markdown while allowing her to use Gmail to write her posts. Our solution was to enable post-by-email on the blog. By adding a special email address to the recipients, the message is parsed into Markdown, a draft post is created, and she receives an email reply a few seconds later with a link to edit the new post. From there she can review and publish it in a few clicks resulting in a much improved workflow.
We wanted the draft posts created immediately and I didn't care to be polling a mail server every few seconds. Fortunately, we found a new service that made this project incredibly easy to implement.
CloudMailin.com is a fantastic service that does the opposite of most other mail services. Rather than providing an API based method of sending email like Postmark, another fantastic service, CloudMailin.com receives email at a provided address and POSTs the data to a URL of your choosing. In addition to the simple parsing of SMTP headers and MIME parts, the service can handle email attachments. Pay them a few bucks extra and they'll upload the attachments to one of your S3 buckets!
A competing service we evaluated started at a pricey $30 a month; a bit ridiculous if we are receiving 5 emails a week to start. CloudMailin.com's recently announced pricing is right on the mark with a 200 message free plan and a 3000 message micro plan for $9 per month.
So how did we make it work? Let's look at some code...
django-cloudmailin is a Django app we created to make working with CloudMailin.com as simple as possible. First we need a method that will receive the posted email message parameters and create a blog post.
In create_post we extract the parameters from the message to get the author, title, and content of the post. A post object is created and an email is sent back to the original sender of the email with a link to the Django admin for the new post. The author needs to check to make sure the post looks correct and hit publish. This is a greatly simplified example because we do some additional parsing of the content to transform the plain text into valid Markdown, but it should give you an idea of how it works.
Next we register that method with the mail handler.
MailHandler is a class-based view provided by django-cloundmailin that handles the registration and processing of mail messages. In this example we register our CloudMailin.com email address and secret key with the method that is to be invoked upon receipt of a new message. Multiple email addresses can be registered with the handler to allow for many different actions-by-mail in the same application. Finally the MailHandler instance is associated with an URL pattern in urls.py.
All incoming messages are signed with your secret key to prevent any old person from spamming your mail endpoint. The MailHandler instance takes care of verifying the signature so you can concentrate on writing your application.
You can find the source for django-cloudmailin on GitHub.Continue reading