Hmmm ... I did some more digging, and I see now that it's trying to combine the name<email> into one parameter, but would be better letting the application do that properly.
I wonder if the following rewrite to that section may be helpful:

Code:
        $custname = $basket->fields['fname']." ".$basket->fields['lname'];
        $outEmailAddr = '"' . $custname . '" <' . $basket->fields['email'] . '>';
        if( zen_not_null(RCS_EMAIL_COPIES_TO) )
            $outEmailAddr .= ', ' . RCS_EMAIL_COPIES_TO;


        $html_msg['EMAIL_MESSAGE_HTML'] = nl2br($email) . zen_db_prepare_input($_POST['message_html']);
        $email = strip_tags($email . "\n\n" . zen_db_prepare_input($_POST['message']));
        $from = zen_db_prepare_input($_POST['from']); // STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS
        $subject = zen_db_prepare_input($_POST['subject']); // EMAIL_TEXT_SUBJECT
        zen_mail('', $outEmailAddr, $subject, $email, '', $from, $html_msg);
to
Code:
        $custname = $basket->fields['fname']." ".$basket->fields['lname'];        $outEmailAddr = '"' . $custname . '" <' . $basket->fields['email'] . '>';
        $html_msg['EMAIL_MESSAGE_HTML'] = nl2br($email) . zen_db_prepare_input($_POST['message_html']);
        $email = strip_tags($email . "\n\n" . zen_db_prepare_input($_POST['message']));
        $from = zen_db_prepare_input($_POST['from']); // STORE_OWNER . ' <' . STORE_OWNER_EMAIL_ADDRESS . '>'
        $subject = zen_db_prepare_input($_POST['subject']); // EMAIL_TEXT_SUBJECT
        zen_mail($custname, $basket->fields['email'], $subject, $email, STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, $html_msg);
        if (zen_not_null(RCS_EMAIL_COPIES_TO)) {
          zen_mail('', RCS_EMAIL_COPIES_TO, $subject, $email, STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, $html_msg);
        }