Here is what I have done. If the rust is in a fairly accessible area, cut that area out, run up to your favorite "they have everything store" and get a piece of galvanized or standard sheet metal. Cut metal to fit so that the ends of the metal overlap the cut out area by an inch or 2. Clean and prime the metal and paint if you wish. Run a bead of silicone or butyl rubber between the new metal and the old metal. While holding in place (you will have to get other tools handy first) drill some holes about 2-3" at regular intervals around the perimeter of the repair. Now pop some suitably sized rivets in each hole. There you have it. Run some more butyl or silicone around the edge of the repair (on both top and bottom if you can do it). Keep one finger wet with water and smooth the goop down. If you keep your finger wet the goop will not stick to it and you can sculpt the goop just like you want it.
You can finish up by using a can of undercoating of your choice. I would suggest not using the "rubber" type here. The oily tar-type stuff works best for me. Hope this helps. I have used this method many times and it works for years. Looks just fine too! Good luck.
2001 SSEi- black; stock 92K
1995 Vette; Competition Yellow; stock; 38K