2009-04-24 18 views
11

Obecnie używam biblioteki niestandardowej w mojej pracy. Aż do chwili świetności biblioteka działała doskonale. Najwyraźniej wraca fałszywie od dzisiaj.Poczta zwraca wartość false

Sama biblioteka jest zasadniczo opakowaniem wokół poczty funkcji. Buduje części "graniczne" i wszystko.

Ponieważ klasa jest dość duża, nie zamieszczam jej tutaj ... ale zastanawiam się, jakie są powody, dla których w teorii powód, dla którego mail zwróci fałsz?

  • SMTP jest ustawiony w php.ini
  • Sender jest ustawiony w nagłówkach
  • Sender jest int postaci: sender<[email protected]>
  • Wszystko jest prawidłowo wysłany (korpus + nagłówki + tematu)
  • Załóżmy, że mail() działa poprawnie na stronie, ale na tej konkretnej stronie po prostu nie działa. Wiem, że to musi pochodzić ode mnie, ale fajnie byłoby mieć gdzie zacząć szukać.
  • O tak, biblioteka jest nieudokumentowana.

[edytuj] Wystarczy znaleźć mniejszą funkcję i nadal nie działa, będę go wydrukować następnie:

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; 
    } 
} 

Nazwałem go:

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

Odpowiedz

4

Jeśli klasa jest tylko otoki wokół poczty funkcji, chciałbym spróbować drukowanie do pliku parametry używane podczas wywoływania funkcji poczty

2

To możliwe, że adres, na który próbujesz go wysłać, serwer, który go obsługuje, odrzuca pocztę.

Jest na to zbyt wiele zmiennych, aby powiedzieć na pewno.

0

jest twój założenie, że funkcja() Sprawdza jedną przetestowaniu? Sprawdziłbym, aby upewnić się, że biblioteka nie przekazuje tylko niepowodzenia funkcji mail().

Jeśli przetestowałeś założenie, przejrzałbym instrukcje zwrotne z biblioteki i sprawdziłbym, czy mógłbym znaleźć przyczynę fałszywej wartości. To często możliwe, nawet w nieudokumentowanym kodzie.

+0

To poczta sama, że ​​wraca fałszywe. Upewniłem się, że zweryfikuję wartość zwracaną poczty. – Erick

3

Spróbuj ustawić

ini_set('sendmail_from', $from); 

Jeśli można pokazać nam kod byłoby łatwiej zobaczyć, co się dzieje źle.

+0

Dzięki eyze za skierowanie mnie we właściwym kierunku. – txyoji

12

Po prostu miałem ten sam problem. Po aktualizacji PHP funkcja poczty zawsze zwraca wartość false.

Kiedyś ten mały fragment to sprawdzić:

<?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(); 

Roztwór ustawienie wartości w moim php.ini dla 'sendmail_from' i 'sendmail_path'. Prawidłowe wartości w moim przypadku były:

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

(. Używam CentOS 5.3 w/Zend Server CE)

Można użyć ini_set(), aby ustawić wartość 'sendmail_from', ale Zmienna "sendmail_path" musi być skonfigurowana w twoim php.ini lub http.conf.

+0

podpowiedź z config sendmail_from zrobiła to; D thx – ZFNerd

5

miałem podobny problem, funkcja elektronicznej zawsze zwraca false, nawet jeśli e-mail zostanie odebrany pomyślnie.

znalazłem w pliku konfiguracyjnym php.ini php, ja skonfigurować

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

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

Zmieniłem go poniżej

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

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

Jak na tym sendmail_from jest dla win32, więc w * Uniksowy OS musimy ustawić wartość, jak pokazano w zmiennej sendmail_path.

Pozdrowienia Minesh

Powiązane problemy