added "cc" and "body" for searching
[squirrelmail.git] / functions / smtp.php
index 4c273614e558e85069bcdaf065cf4aee734667b6..868c2620e89f63674e5053c715e882df7d1ec50b 100644 (file)
          $bcc_list = getLineOfAddrs($bcc);
          
          /* Encoding 8-bit characters and making from line */
-         $subject = encodeHeader($subject);
+         $subject = stripslashes(encodeHeader($subject));
          if ($from == "")
             $from = "<$from_addr>";
          else
-            $from = encodeHeader($from) . " <$from_addr>";
+            $from = "\"" . encodeHeader($from) . "\" <$from_addr>";
          
          /* This creates an RFC 822 date */
          $date = date("D, j M Y H:i:s ", mktime()) . timezone();
          echo "$errorNumber : $errorString<br>";
          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<BR>Message not sent!<BR>Reason given: $tmp<BR></BODY></HTML>";
       }
 
    }
 
 
-   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
 
          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;
       }
 
       if ($status == 0) {
-         echo "<HTML><BODY BGCOLOR=#ffffff>";
+         displayPageHeader($color, "None");
          echo "<TT>";
-         echo "<BR><B>ERROR</B><BR><BR>";
+         echo "<br><b><font color=\"$color[1]\">ERROR</font></b><br><br>";
          echo "&nbsp;&nbsp;&nbsp;<B>Error Number: </B>$err_num<BR>";
          echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Reason: </B>$message<BR>";
-         echo "<B>Server Response: </B>$line<BR>";
+         $lines = nl2br(htmlspecialchars($lines));
+         echo "<B>Server Response: </B>$lines<BR>";
          echo "<BR>MAIL NOT SENT";
          echo "</TT></BODY></HTML>";
          exit;