Personally, I don't think that it's worth the time and effort of writing to companies, you may get a little work for designing them an html template for their auctions, but they are probably on ebay for exposure rather than because they don't know they could have a website just selling things on their own.
I think that the best way that you can build up a portfolio is in two ways.
1, do some work for local businesses, find friends and family who have links and make sites for cheap of free just so that you can get a portfolio.
2, go to project tendering sites.
one of the best project tendering sites that I've found for the new starter running a business of web design from home is www.rentacoder.com
all you need is a paypal account, (that's how you get paid), the site acts as a middle man, (and makes some commission obviously).
basically a company that wants something ade goes to this site and post a description of what they want, then you'll reply to their advert saying that you can do this, link to your portfolio showing relevant experience and tell them something about yourself and how much you'd charge to do the work.
don't expect to get every coding job that you apply for on a site like this, but after you've done a few jobs and built up your reputation, (they have a feedback system) you'll get a few more jobs.
even if you only get 1 in every 20 jobs that you apply for on a site like this I still think it's a better way of contracting business because you are going after hot leads and not effectively cold calling people asking if they want work done.