From f8a9394d150247ec6e1f3a997cf49b08a11a40dc Mon Sep 17 00:00:00 2001 From: pallo Date: Fri, 14 Jul 2000 21:41:17 +0000 Subject: [PATCH] Fixed problem with multiline SMTP reponses. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@617 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/smtp.php | 47 +++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/functions/smtp.php b/functions/smtp.php index 709de553..5900fe9f 100644 --- a/functions/smtp.php +++ b/functions/smtp.php @@ -294,52 +294,53 @@ echo "$errorNumber : $errorString
"; exit; } - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); $to_list = getLineOfAddrs($to); $cc_list = getLineOfAddrs($cc); /** Lets introduce ourselves */ fputs($smtpConnection, "HELO $domain\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); /** Ok, who is sending the message? */ fputs($smtpConnection, "MAIL FROM:<$from_addr>\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); /** send who the recipients are */ for ($i = 0; $i < count($to); $i++) { fputs($smtpConnection, "RCPT TO:<$to[$i]>\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); } for ($i = 0; $i < count($cc); $i++) { fputs($smtpConnection, "RCPT TO:<$cc[$i]>\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); } for ($i = 0; $i < count($bcc); $i++) { fputs($smtpConnection, "RCPT TO:<$bcc[$i]>\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); } /** Lets start sending the actual message */ fputs($smtpConnection, "DATA\r\n"); - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + errorCheck($tmp, $smtpConnection); // Send the message $headerlength = write822Header ($smtpConnection, $t, $c, $b, $subject, $more_headers); $bodylength = writeBody($smtpConnection, $body); fputs($smtpConnection, ".\r\n"); // end the DATA part - $tmp = nl2br(htmlspecialchars(fgets($smtpConnection, 1024))); - $num = errorCheck($tmp); + $tmp = fgets($smtpConnection, 1024); + $num = errorCheck($tmp, $smtpConnection); if ($num != 250) { + $tmp = nl2br(htmlspecialchars($tmp)); echo "ERROR
Message not sent!
Reason given: $tmp
"; } @@ -351,13 +352,20 @@ } - function errorCheck($line) { + function errorCheck($line, $smtpConnection) { global $page_header_php; global $color; if (!isset($page_header_php)) { include "../functions/page_header.php"; } + // Read new lines on a multiline response + $lines = $line; + while(ereg("^[0-9]+-", $line)) { + $line = fgets($smtpConnection, 1024); + $lines .= $line; + } + // Status: 0 = fatal // 5 = ok @@ -432,7 +440,7 @@ case 554: $message = "Transaction failed"; $status = 0; break; - default: $message = "Unknown response: $line"; + default: $message = "Unknown response: ". nl2br(htmlspecialchars($lines)); $status = 0; $error_num = "001"; break; @@ -444,7 +452,8 @@ echo "
ERROR

"; echo "   Error Number: $err_num
"; echo "         Reason: $message
"; - echo "Server Response: $line
"; + $lines = nl2br(htmlspecialchars($lines)); + echo "Server Response: $lines
"; echo "
MAIL NOT SENT"; echo ""; exit; -- 2.25.1