You can simply send the message multiple ($N$) times and if all N messages were received at the same SNR you would coherently average the messages for a processing gain in SNR equal to $10\log_{10}(N)$ in dB. This is effectively trading bandwidth for SNR as you are using more resources to send the same message. To coherently add you remove the complex carrier phase for each message prior to adding in the average. If the messages were not received at the same SNR (such as if it was a fading channel) you would optimally weight each message by the SNR of each message prior to averaging.
This latter point is similar to what occurs in a matched filter in that each sample within a symbol duration is optimally weighted by the SNR for that sample prior to averaging over the symbol duration.
See @MBaz's good comments under the OP's question clarifying that there really is no actual SNR gain if you consider the total signal power of all messages sent, since the total signal power would need to increased to realize the gain listed above.