Ich habe ein Problem mit Stream-Socket und SSL in PHP 5.6. Es scheint, dass SSL die Ausgabe puffert. Im folgenden Beispiel wird der Befehl "ehlo" ignoriert (der Server reagiert nicht). Aber wenn etwas anderes nach "ehlo" gesendet wird, z.B. eine neue Leitung in einem anderen Anruf an fwrite
, Server sendet Antwort.Stream-Socket mit SSL
$errno = '';
$errstr = '';
$timeout = 5;
$streamContext = stream_context_create();
$host = 'ssl://smtp.some.server.com:465';
$stream = stream_socket_client($host, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
stream_set_blocking($stream, 1);
stream_set_timeout($stream, $timeout);
stream_set_write_buffer($stream, 0);
$fgets = fgets($stream);
print_r($fgets);
fwrite($stream, "ehlo [127.0.0.1]\r\n");
$response = '';
do {
$line = fgets($stream);
$response .= $line;
} while (null !== $line && false !== $line && ' ' != $line{3});
print_r($response);
fclose($stream);
Ich habe eine Antwort bekam:
220 epicserver.net.pl ESMTP IdeaSmtpServer v0.80.2 ready.
(es ist von der ersten print_r
).
Aber wenn nach Zeile: fwrite($stream, "ehlo [127.0.0.1]\r\n");
ich zusätzliche Buchse Schreib hinzufügen: fwrite($stream, "\n");
Ausgang ist ok:
220 epicserver.net.pl ESMTP IdeaSmtpServer v0.80.2 ready.
250-epicserver.net.pl Hello ip-166-242.pl [94.183.162.232], pleased to meet you
250-PIPELINING
250-ENHANCEDSTATUSCODES
250-SIZE
250-8BITMIME
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 HELP
ich stunnel mit habe versucht, zu überprüfen, ob es sich um eine PHP-SSL-Wrapper Problem ist und wenn ich $host
-$host = 'localhost:110;'
ändern (meine Stunnel-Konfiguration) alles funktioniert perfekt (ohne die spezielle fwrite
Methode hinzufügen).
Hat jemand dieses Problem konfrontiert?
Hat z http://swiftmailer.org zeigen das gleiche Problem? Wenn nicht, könnten Sie diese Implementierung mit Ihrer vergleichen. – VolkerK
Ja, dieser Testcode stammt aus der Implementierung von swiftmailer. –
Also, wenn Sie Swiftmailer mit ssl: //smtp.some.server.com: 465 verwenden, funktioniert es nicht, weil es den Handshake nicht abschließt? – VolkerK