Hallo,
worann es genau liegt, kann ich Dir auch nicht sagen. Mir ist allerdings schleierhaft, warum Du nicht mit der komfortablen Funktion str_replace() folgendermaßen arbeitest:
$strings=array('{password}', '{vorname}', '{name}', '{login}', '{link}');
$replace=array($zeile[3], $zeile[2], $zeile[1], $zeile[4],$script_url.'/_p.php?userid='.$zeile[0].'&mailid');
$text=str_replace($string,$replace,$mailtext);
Gruß aus Berlin!
eddi