I tried that yesterday.. I think it went something like
$i = firstname.length - firstname.length
But are you sure that's the issue - as above, I can send in an actual campaign, and the preview works. It is just the email approval and sample send that fails.
Yes, I'm quite sure that's the issue. That exception is thrown if you have a string of length 0 (which does not have a charAt(0)).
#set($fi = $lead.FirstName.toLowerCase().charAt(0))