The poor mans version is the Paypal Subscribe button, you can set the iteration, amounts, and it will send emails based on the transaction result.
You can step it up a bit with services such as CheddarGetter.com, which give you a bit more control, and an api.
If you have a merchant account, you can also use Authorize.net for subscriptions, that also works through an api, and just like the services above provides safe storage for credit card numbers.
... Usually what I recommend is that you build your own system. Building your own system affords you to store more information in your db, program refunds, upsells, downsells, retention, and my favorite a pro-rated subscription rate that allows you to bill your customers first on a pro-rated amount then monthly ( this can be done with paypal subscriptions by doing an intial cost, but its much cleaner in your system).
If you are going with the Paypal option, please look into EWP (encrypted web payments) which allow you to encrypt your subscribe buttons and prevent from others from manually changing the dollar amounts.