Andrew Brown stole the collection money while the congregation were singing at Rattray Parish Church, Blairgowrie.
He made off with nearly £300 in cash and cheques on 11 January.
Brown, 24, was jailed for four months after Perth Sheriff Court heard he had already spent some of the money on drugs by the time police arrived.
Brown, from Ashgrove Gardens, Blairgowrie, admitted stealing £296.40 from the church's vestry. Only £180 was recovered by the police.
'Felt sorry'
Church-goers realised there had been a robbery when coins were found on the vestry floor.
Brown envelopes containing loose change were found discarded a short distance away from the church.
The trail of coins and envelopes led police to a nearby park, where they found Brown who immediately admitted what he had done.
He told them he had used the money to buy valium and heroin from a Big Issue seller in Perth.
He had also spent some of the cash on food and his bus fares to and from Blairgowrie.
Solicitor David Holmes said: "He pled guilty straight away because he felt sorry for what he had done.
"He still continues to feel sorry for what he has done and would wish the opportunity to make recompense."
Source: news.bbc.co.uk