2009-04-24 14 views
11

J'utilise actuellement une bibliothèque personnalisée dans mon travail. Jusqu'à récemment, la bibliothèque fonctionnait parfaitement. Il revient apparemment faux depuis environ aujourd'hui.Mail renvoie false

La bibliothèque elle-même est essentiellement une enveloppe autour de la fonction mail. Il construit les parties "limites" et tout.

Comme la classe est assez grande, je ne vais pas la poster ici ... mais je me demande, quelles sont les raisons en théorie pour lesquelles le courrier retournerait faux?

  • SMTP est définie dans le php.ini
  • Sender est situé dans les en-têtes
  • Sender est int sous forme de: sender<[email protected]>
  • Tout est envoyé correctement (corps + têtes + sujet)
  • Supposons que mail() fonctionne correctement sur le site Web, mais sur cette page spécifique, il ne fonctionne pas. Je sais que cela doit venir de moi, mais ce serait amusant d'avoir un endroit où commencer à chercher.
  • Oh et oui, la bibliothèque n'est pas documentée.

[modifier] Je viens de trouver une fonction plus petite et ne fonctionne toujours pas, je vais l'imprimer sur puis:

function send_html($from, $email, $subject = "AUCUN", $message, $cc = "", $bcc ="", $priotity = "3") { 
    $headers = ""; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

    if (strpos($from, "ourwebsite.com") != false || strpos($from, "rencontresportive.com") != "") { 
     $headers .= "From: Ourwebsite.com <" . $from . ">\r\n"; 
    } else { 
     $headers .= "From: " . $from . " <" . $from . ">\r\n"; 
    } 

    $headers .= "X-Sender: <" . $from . ">\r\n"; 
    $headers .= "X-Priority: " . $priotity . "\r\n"; 
    $headers .= "X-Mailer: PHP\r\n"; 
    $headers .= "Return-Path: <[email protected]>\r\n"; 

    if ($cc != "") { 
     $headers .= "cc:" . $cc . "\r\n"; 
    } 
    if ($bcc != "") { 
     $headers .= "bcc:" . $bcc . "\r\n"; 
    } 
     if (mail($email, $subject, $message, $headers)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Je l'ai appelé avec:

send_html([email protected], [email protected], utf8_decode("the subject"), "<h1>test</h1>"); 

Répondre

4

Si la classe est un conteneur autour de la fonction mail, je voudrais essayer l'impression d'un fichier les paramètres utilisés lors de l'appel de la fonction mail

2

Il est Il est possible que l'adresse à laquelle vous essayez de l'envoyer soit rejetée par le serveur qui la gère.

Il y a trop de variables impliquées pour dire avec certitude.

0

Est-ce votre hypothèse que la fonction mail() fonctionne celui que vous avez testé? Je vérifierais pour m'assurer que la bibliothèque ne passe pas juste un échec de la fonction mail().

Si vous avez testé l'hypothèse, j'examinerais les instructions de retour de la bibliothèque et verrais si je pourrais trouver ce qui causerait une fausse valeur. C'est souvent raisonnablement possible même dans le code non documenté.

+0

Il est courrier lui-même qui retourne faux. Je me suis assuré de vérifier la valeur de retour du courrier. – Erick

3

Essayez de régler les

ini_set('sendmail_from', $from); 

Si vous pouviez nous montrer le code, il serait plus facile de voir ce qui va mal.

+0

Merci eyze pour m'indiquer dans la bonne direction. – txyoji

12

J'ai juste eu le même problème. Après une mise à niveau php, la fonction mail renvoie toujours false.

J'ai utilisé ce petit extrait pour le vérifier:

<?php 
error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 1); 
echo 'I am : ' . `whoami`; 
$result = mail('[email protected]','Testing 1 2 3','This is a test.'); 
echo '<hr>Result was: ' . ($result === FALSE ? 'FALSE' : 'TRUE') . $result; 
echo '<hr>'; 
echo phpinfo(); 

La solution a été de définir une valeur dans mon php.ini pour 'sendmail_from' et 'sendmail_path'. Les valeurs correctes dans mon cas sont les suivants:

sendmail_from = "[email protected]" 
sendmail_path = "/usr/sbin/sendmail -t -i" 

(. J'utilise CentOS 5.3 w/Zend Server CE)

Vous pouvez utiliser ini_set() pour définir la valeur de 'sendmail_from', mais la variable 'sendmail_path' doit être configurée dans votre fichier php.ini ou http.conf.

+0

l'indice avec la config sendmail_from l'a fait; D thx – ZFNerd

5

J'ai eu le même problème, la fonction mail renvoie toujours false, même si l'e-mail est reçue avec succès.

J'ai trouvé dans php.ini fichier de configuration php, je l'avais mis en place

; For Win32 only. 
;sendmail_from = [email protected] 

; For Unix only. 
sendmail_path = "/usr/sbin/sendmail -t -i -f "[email protected]" 

Je l'ai changé au-dessous

; For Win32 only. 
;sendmail_from = [email protected] 

; For Unix only. 
sendmail_path = /usr/sbin/sendmail -t -i -f [email protected] 

Selon cette sendmail_from est pour win32, donc en * Unix OS, nous devons définir la valeur comme indiqué dans la variable sendmail_path.

Cordialement Minesh

Questions connexes