As long as your volume is quite low and you don't mind if the sms's don't occassionally get through, then posting data through phone companies websites is a good free solution.
However for my uses (commercial system monitoring) the volume and the availability make using websites a problem. So I use a modem and call SMS Client from http://www.styx.demon.co.uk
That said, if you're just sending to a small number of SMS networks, chances are you could knock something up in perl talking directly to the serial port, and just using the config files from SMS Client as a hint. It's normally as simple as dial the right number, wait for CONNECT, enter the phone number you want to message, hit return, then the message, then return, wait for an 'ok, done' message, and hang up (I've (badly) written something previously to do this, but am using SMS Client to keep an eye on updates that are needed)