Your variable names changed when you got to the mail() function but I'm guessing that's just in this example. You can set that function to a variable to test if the email was submitted to the local mail system, too.
$gotSent = mail($email, $l_welcomesubj, $l_welcomemail, "From: $email_from"

;
It will equal 0 if it didn't get processed by PHP correctly. Of course, you have no way of checking if the email got delivered using PHP, you'd have to check the server for that.
Have you tried putting this right before the mail() part, for checking?
echo "<p>" . $email;
echo "<p>" . $l_welcomesubj;
echo "<p>" . $l_welcomemail;
echo "<p>" . $email_from;
exit();
Your mail may have issues if $email or $email_from aren't valid email addresses.
If that all checks out I'd start making sure that the server is cooperating. Also, can you send an email like this?
mail("yourname@yourdomain.com","Testing","Test email"

;
Something really simple, no variables or anything. Can anyone else add some troubleshooting for the server part of this? I'm a programmer, Jim, not a Sys Admin!