2009-08-27 5 views
5

stiamo iniziando a creare un'app Web. Il mio collega si sta sviluppando su Linux, e sto correndo tramite uno stack WAMP con Windows XP. Stiamo usando Zend.PHP invia posta su Windows provocando l''hang' dopo l'invio dell'email

Quando si invia un modulo e si invia un'e-mail utilizzando l'e-mail di Zend, l'e-mail viene inviata e quindi si ottiene uno schermo vuoto, in cui sulla macchina Linux l'app continuerà normalmente.

Così ho scritto il mio piccolo script, mail.php che utilizza phpmailer - e succede esattamente la stessa cosa, l'e-mail invia, e poi lo schermo vuoto. Così abbiamo:

if(!$mail->Send()) 
{ 
echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else 
{ 
echo "Message has been sent"; 
} 

è, come ci ha segnalato l'errore, l'e-mail mandate, ma "comunicazione è stata inviata" mai stampe allo schermo (o qualsiasi altra cosa, normale HTML troppo).

Non sono molto tecnico, quindi mi scuso se ci sono passaggi di debug evidenti da eseguire. C'è qualcosa di particolare nella configurazione di Windows php che mi è sfuggito?

È un server SMTP esterno con autenticazione.

risposta

0

scuse per aver impiegato così tanto tempo a rispondere a questo. Il problema è stato causato da un firewall nell'ufficio che blocca il traffico SMTP in uscita. Non sono ancora sicuro del motivo per cui non ha restituito nulla, ma al di fuori di questo ufficio, quando è stato testato, gli errori di php per smtp non valido ecc. Sono tornati a buon fine. Solo un caso di ottenere le porte appropriate consentite sulla rete.

Grazie a tutti per il loro aiuto.

1

Sembra che tu stia ricevendo un errore, ma semplicemente non lo vedi. Assicurarsi di avere da qualche parte nel codice

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

e controllare i log di Apache per 500 errori pure.

+0

Ciao Peter. Grazie mille per aver risposto. Ho aggiunto le righe che hai suggerito e ancora ottengo una schermata vuota. Apache non mostra errori che posso vedere, l'ultima voce nel log di accesso di apache è: 127.0.0.1 - - [27/Aug/2009: 20: 17: 08 +0100] "OTTIENI /mail.php HTTP/1.1" 200 - che sembra ok? – Dave

1

PHP ha il proprio registro degli errori, in caso di dubbio controllare lì. Si dovrebbe essere in grado di individuare eseguendo

<?php 
phpinfo(); 
?> 

Si trova nella sezione diPHP core - se è vuoto, modificare il file php.ini e girare log_errors su e specificare dove si desidera che il file da essere.

Errori che non sono riuscito a visualizzare Lo ho trovato usando questo.

UPDATE

fatto un po 'di scavo e sembra che Zend_Mail è essenzialmente un wrapper per la posta del PHP() funzione in base alla documentazione: http://framework.zend.com/manual/en/zend.mail.html

Con questo in mente c'è qualche informazioni su mail di PHP () nel manuale di PHP che vorresti vedere per SendMail http://www.php.net/manual/en/ref.mail.php il primo commento sulla pagina (al momento della stesura di questo documento) ha tutti i dettagli sulla configurazione del tuo server WAMP per comportarsi come un server * nix - almeno per quanto riguarda le operazioni mail() ;-)

1

Uso phpmailer con successo su una finestra di Windows (la mia macchina di sviluppo). Posso vedere il codice di configurazione? Faccio qualcosa di simile al seguito. Una cosa è che devi assicurarti che il modulo openssl sia installato in php se stai usando ssl. Dai uno sguardo al sotto. Assicurati che il tuo flag SMTPDebug sia impostato per avere un output con cui puoi lavorare.

<?php 

$mail    = new PHPMailer(); 

$mail->IsSMTP(); 
$mail->Host  = "blah.com"; 
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = "ssl"; 
$mail->Host  = "mail.blah.com"; 
$mail->Port  = 465; 
$mail->Username = "[email protected]"; 
$mail->Password = "smtppass"; 

$mail->SetFrom('[email protected]', 'Blah Name'); 
$mail->AddReplyTo("[email protected]", "Blah Name"); 
$mail->Sender = "[email protected]" 

?>