Stay away from using delay(). What you need to do is to send a letter when a button changes from not pressed to pressed rather than when the button is pressed as you are doing at present.
To do this you save the previous state of the button and if it has become pressed since the last time you checked you act on it. Look at the StateChangeDetection example in the IDE to see how to do it.
Another factor is that switch contacts bounce and do not open and close cleanly so can produce multiple on/off states even with what seems to be one button press. The IDE and the Web have examples of debouncing switches.