A week for a simple feature might seem like overkill, but I did want to do this right and with as little breakage as possible. And it's not quite as straight forward as you may think either.
Design strategy number one: avoid complaints of spam as much as possible. As a result, I added a verification scheme. Upon first submitting an email address, the program displays a page saying the email address has been collected and at the same time, an email has been sent to the email address requesting verification. This is to keep a malicious person from submitting an email address to some unsuspecting person who then starts receiving emails about some oddball site being updated. So simply adding an email address to the end of a list is right out.
To this end, there are two lists maintained—one list of addresses that I am waiting a reply from, and the second one that actually gets sent the notifications of updates.
When the person subscribing replies, the reply email is sent to a program that gets the email address that doing the replying, and looks it up in the pending list, and if so, removes it from the pending list and adds the email to the notification list, and sends an email saying as much.
The program that processes new entries then goes sequentially through the notification list and sends out an email message.
Fairly straightforward, although there are some details I skimped out on (like checks to see if the address is already in one of the lists, unsubscribing, just small details) that's pretty much how it works. The time spent though, was making sure I got all the details (big and small) right. Oh, and making it such that Spring could use it for her journal as well.