I tried a little experiment with one of my t-shirts the other day. The under arm stains were pretty bad.
A quick search brought me a lot of ideas, but the easiest, and the one I had on hand, was dish washing liquid. Most sites specified Dawn, which I had, as well as a generic brand. So I tried one on each sleeve.
I wet the shirt added a few drops of the dish washing liquid and gently rubbed the stain. Then I washed it as usual.
I can't remember which was which, but it doesn't really matter. Now that I know it works I will tackle my husband's dress shirts.