It's a little hard to be specific since you don't say what he said or to whom. Was he swearing?
Saying "I hate you?" Did he say this to kids, teachers, the administrators? What precipitated it? Did someone anger your child and he responded inappropriately? Or did it come out of the blue and you don't know the cause?
Apology letters are a good start, but it's important to realize that some kids think that an apology makes it all fine. It's not a do-over. It helps to understand that bad words stay "out there." There are a few versions of a well-known story about gossip (but it applies to any harmful or hurtful speech). You can google it or find it in your children's library - search for Gossip or Feathers in the Wind. There's a Jewish version and a Catholic version that I'm aware of, and there may be others. The point of the story is that a child gossips, and the adult in the kid's life says to open up a feather pillow and scatter the feathers. The kid does, and comes back to report this. The adult then says, "Great. Now go gather them up and put them back in the pillow." Of course the kid cannot, because the wind has scattered the feathers. The feathers represent words. Yes, the kid could gather up some of them - which is what an apology letter does. But the rest of the words, like the feathers, are out there, and can't be taken back.
It may be that the best you can do is to provide a good life lesson for going forward. This, of course, is the purpose of any punishment or consequences, but sometimes seeing another person's actions (such as identifying with the kid in the story, or better yet, the victims in the story) is even more powerful than losing TV privileges or play dates.