$mail hem bir string aynı zamanda bir object gibi görünüyor. İki farklı amaç için aynı değişkeni kullanmamak gerekiyor. Bu yüzden aslında object olmayan bir setText çağrısında hata alıyorsunuz.
Aynen dediğiniz gibi; doğru. Ancak bu dosyayı 2017 yılında opencartın bir dokümanına göre bu şekilde düzenlemişiz ve o zamadan beri kullanmışız. O zamandan beri nasıl kullandık, şimdi neden durum değişti anlamış değilim.