2009-07-09 6 views
4
$to = "[email protected]"; 
$subject = "Hi!"; 
$body = "Hi,\n\nHow are you?"; 
if (mail($to, $subject, $body)) { 
    echo("pMessage successfully sent!/p"); 
} else { 
    echo("pMessage delivery failed.../p"); 
} 

A écrit un code de sendmail php de base qui, mais il me donne l'erreur suivante:php envoyer le code postal ne fonctionne pas

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xampp\htdocs\mail.php on line 5 Message delivery failed...

J'ai changé le fichier php.ini `` et mis [email protected] mais toujours le problème persiste Ecriture du script de messagerie pour la première fois.

Est-ce que je fais quelque chose de mal? Y a-t-il une meilleure manière de faire cela?

+2

je pense qu'il est important de mentionner que mettre votre email réel adresse en texte clair sur internet est juste demander de l'obtenir récolté par spambots. J'espère que vous l'avez obscurci un peu et que je ne le vois pas parce que je ne connais pas votre véritable adresse e-mail. : D –

Répondre

2

additional_headers (optional)

String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n).

Note: When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini. Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

J'espère que cela aide.

1

Tout d'abord, vérifiez que vous avez modifié le bon php.ini - ajoutez phpinfo(); à vos informations de diagnostic de sortie de script, y compris l'emplacement de php.ini. Vous devriez également pouvoir voir la valeur "sendmail_from" configurée ici aussi.

A défaut, fournir un en-tête From, comme indiqué par usoban

$hdrs="From: [email protected]"; 
mail($to, $subject, $body, $hdrs); 
+0

J'ai édité le bon fichier php.ini mais il y a toujours des erreurs – anand

1

Si vous avez modifié le php.ini et il ne reflète pas votre changement, vous pouvez redémarrer votre service Web, comme beaucoup Les environnements ne chargeront le php.ini que lorsque le serveur démarrera.

0

Plutôt que de définir l'adresse de formulaire dans php.ini, il suffit de l'envoyer dans les en-têtes comme à la place usoban. Cela vous permettra d'économiser des maux de tête lorsque vous hébergez un autre site sur la même installation et oublier de définir les en-têtes la prochaine fois.

0

La fonction PHP mail() génère beaucoup de problèmes. Lorsque vous l'aurez enfin activé sur votre serveur, vous remarquerez que vos courriels se retrouvent dans les dossiers de spam de vos utilisateurs.

Je recommande d'envoyer des messages en utilisant une de ces bibliothèques SMTP PHP au lieu:

  • PHPMailer - standard de facto
  • http://swiftmailer.org/ - une approche plus moderne, encore plus petite base d'utilisateurs
1

J'ai rencontré le même problème et il a fini par être parce que mon serveur utilisait le [email protected] comme l'adresse de courriel même si j'ai spécifié le mien dans les en-têtes.

La réponse que je trouve un autre endroit était d'ajouter un 5ème paramètre à l'appel de messagerie pour forcer le système à utiliser l'adresse email que je spécifié:

$from = '[email protected]' 
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f [email protected]');