You can usually get rid of those types of stains if you soak it in a mixture of 1/8 cup of bleach, 1 cup of powdered dish washing soap (the kind you pour into a dishwasher) and hot water.
If the article won't stand the hot water dissolve the soap and bleach into the hot water and then let the mixture cool before adding your item.
I use this mixture in the washing machine on the lowest water level that your article can fit in, then when you are done soaking (about 30 minutes or less) you can run it through a regular wash. This works on baby clothes stains as well.
The simplest way to remove stains (most old ones also) is to rub in Fels Naptha (found in the bar soap aisle). I have even lightened if not removed old blood stains, it works beautifully.
Excellant results on vintage table linens using the powdered soap detergent for dishes and bleach. Actually I am living in Portugal and only have access to the powdered tablets for the dishwasher. Simply dissolved them in hot water with the bleach, then let the water cool down a bit, but still warm. I hand agitated the linens and rinsed them in warm water. Thanks for the advice. These napkins and tablecloths are very sheer.
Go to greatcleaners.com and find Oxyclean Baby Soak, no I don't have any connection or interest in this product! It is just the best thing out there for soaking stains out of anything even old ones. I haven't found any store that carries it but it's well worth having on hand. I belong to the auto ship club as I use it regularly to keep my whites bright without causing damage to fabric's as bleach does. I have yet to see any stain this can't get out! Even if you have to use cold water which is about all I ever use this product will work. I just put my whites or any color that need work in my washer and let it soak overnight in the Baby Soak and then in the morning finish the cycle. My white's come out looking virtually brand new!