2009-08-27 2 views
5

wir beginnen, eine Web-App zu bauen. Mein Kollege entwickelt Linux, und ich laufe über einen WAMP-Stack mit Windows XP. Wir benutzen Zend.PHP senden Mail auf Windows verursacht es zu 'hängen' nach dem Senden von E-Mails

Wenn wir ein Formular abschicken und eine E-Mail mit Zend E-Mail senden, würde die E-Mail senden und dann würde ich einen leeren Bildschirm bekommen, während auf dem Linux-Rechner die App normal weiterlaufen würde.

Also schrieb ich mein eigenes kleines Skript, mail.php, das phpmailer verwendet - und genau das gleiche passiert, sendet die E-Mail, und dann leerer Bildschirm. So haben wir:

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

So gibt es keine Fehler gemeldet, die E-Mail sendet, aber nie auf den Bildschirm „Nachricht gesendet wurde“ druckt (oder irgendetwas anderes, normale HTML auch).

Ich bin nicht sehr technisch, also Entschuldigung, wenn es offensichtliche Debug-Schritte zu nehmen gibt. Gibt es etwas, das Windows php config eigenartig ist, das ich verpasst habe?

Es ist ein externer SMTP-Server mit Authentifizierung.

Antwort

0

Entschuldigung für so lange, um dies zu beantworten. Das Problem wurde durch eine Firewall im Büro verursacht, die den ausgehenden SMTP-Datenverkehr blockierte. Ich bin mir immer noch nicht sicher, warum es nichts zurückgegeben hat - aber außerhalb dieses Büros, als es getestet wurde, die PHP-Fehler für ungültiges SMTP usw. gut zurückgegeben. Nur um die richtigen Ports im Netzwerk zu erhalten.

Vielen Dank für ihre Hilfe.

1

Klingt, als ob Sie einen Fehler bekommen, aber nur nicht sehen. Stellen Sie sicher, dass Sie dies irgendwo in Ihrem Code haben

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

Und überprüfen Sie Ihre Apache Protokolle für 500 Fehler.

+0

Hallo Peter. Vielen Dank für Ihre Antwort. Ich fügte die Zeilen hinzu, die Sie vorgeschlagen hatten, und trotzdem habe ich einen leeren Bildschirm. Apache zeigt keine Fehler, die ich sehen kann, der letzte Eintrag im Apache Access Log ist: 127.0.0.1 - [27/Aug/2009: 20: 17: 08 +0100] "GET /mail.php HTTP/1.1" 200 - was scheint in Ordnung? – Dave

1

PHP hat sein eigenes Fehlerprotokoll, im Zweifelsfall dort. Sie sollten es lokalisieren können, indem Sie

<?php 
phpinfo(); 
?> 

Es sollte in der PHP-Core Abschnitt lokalisiert werden - wenn es leer ist, die Datei php.ini bearbeiten und drehen log_errors auf und angeben, wo Sie das wollen Datei zu sein.

Fehler, die ich nicht angezeigt bekommen konnte, habe ich mit diesem gefunden.

UPDATE

Hat einige graben und es scheint, dass Zend_Mail ist im Wesentlichen ein Wrapper für die PHP-Funktion mail() nach der Dokumentation: http://framework.zend.com/manual/en/zend.mail.html

Vor diesem Hintergrund einige Informationen über die PHP-Mail gibt es () Funktion im PHP-Handbuch, das Sie in Bezug auf SendMail betrachten wollen http://www.php.net/manual/en/ref.mail.php Der erste Kommentar auf der Seite (zum Zeitpunkt des Schreibens) enthält alle Details zur Konfiguration Ihres WAMP-Servers, um sich zumindest wie ein * nix-Server zu verhalten so weit wie Mail() Operationen gehen ;-)

1

Ich benutze phpmailer mit Erfolg auf einer Windows-Box (meine dev-Maschine). Kann ich den Setup-Code sehen? Ich mache so etwas wie das Folgende. Eine Sache ist, dass Sie sicherstellen müssen, dass openssl-Modul in PHP installiert ist, wenn Sie ssl verwenden. Schau dir das unten an. Stellen Sie sicher, dass für Ihr SMTPDebug-Flag eine Ausgabe festgelegt ist, mit der Sie arbeiten können.

<?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]" 

?>