First thing to check is thermostat, if your engine takes long time to warm up could be it is stuck open and engine over cools and heater will give only little warmth.
Next a flush of heater matrix, old sludge may be restricting flow.
Another issue can be that even if heater gets hot the seals...