Просмотр исходного кода

added patch to allow use of sendmail instead of connecting to SMTP port
if desired. (Thanks to Gustav Foseid for this patch)

nehresma 25 лет назад
Родитель
Сommit
11aa25ead5
3 измененных файлов с 65 добавлено и 4 удалено
  1. 5 0
      config/config.php
  2. 58 2
      functions/smtp.php
  3. 2 2
      src/compose_send.php

+ 5 - 0
config/config.php

@@ -23,6 +23,11 @@
     $smtpServerAddress = "localhost";
     $smtpServerAddress = "localhost";
     $smtpPort = 25;
     $smtpPort = 25;
 
 
+//  Uncomment this if you want to deliver locally using sendmail instead
+//  of connecting to a SMTP-server
+//    $useSendmail = true;
+//    $sendmail_path = "/usr/sbin/sendmail";
+
 //  This is displayed right after they log in
 //  This is displayed right after they log in
     $motd = "You are using SquirrelMail's web-based email client.  If you run into any bugs or have suggestions, please report them to our <A HREF=\"mailto:squirrelmail-list@sourceforge.net\">mailing list</A>";
     $motd = "You are using SquirrelMail's web-based email client.  If you run into any bugs or have suggestions, please report them to our <A HREF=\"mailto:squirrelmail-list@sourceforge.net\">mailing list</A>";
 
 

+ 58 - 2
functions/smtp.php

@@ -5,6 +5,62 @@
     ** an smtp server.
     ** an smtp server.
     **/
     **/
 
 
+   function sendMessage($username, $domain, $t, $c, $b, $subject, $body, $version) {
+      include("../config/config.php");
+
+      if ($useSendmail==true) {  
+	 sendSendmail($username, $domain, $t, $c, $b, $subject, $body, $version);
+      } else {
+	 sendSMTP($username, $domain, $t, $c, $b, $subject, $body, $version);
+      }
+    
+   }
+
+   // Send mail using the sendmail command
+   function sendSendmail($username, $domain, $t, $c, $b, $subject, $body, $version) {
+      include("../config/config.php");
+
+      // This is pretty much equal to the code in sendSMTP
+      $to = parseAddrs($t);
+      $cc = parseAddrs($c);
+      $bcc = parseAddrs($b);
+      $from_addr = "$username@$domain";
+      $reply_to = getPref($data_dir, $username, "reply_to");
+      $from = getPref($data_dir, $username, "full_name");
+
+      $to_list = getLineOfAddrs($to);
+      $cc_list = getLineOfAddrs($cc);
+      $bcc_list = getLineOfAddrs($bcc);
+
+      if ($from == "")
+         $from = "<$from_addr>";
+      else
+         $from = $from . " <$from_addr>";
+
+      // open pipe to sendmail
+      $fp = popen ("$sendmail_path -t -f$from_addr", "w");
+      
+      fputs($fp, "Subject: $subject\n"); // Subject
+      fputs($fp, "From: $from\n"); // Subject
+      fputs($fp, "To: $to_list\n");    // Who it's TO
+
+      if ($cc_list) {
+         fputs($fp, "Cc: $cc_list\n"); // Who the CCs are
+      }
+      if ($bcc_list) {
+         fputs($fp, "Bcc: $bcc_list\n"); // BCCs is removed from header by sendmail
+      }
+      fputs($fp, "X-Mailer: SquirrelMail (version $version)\n"); // Identify SquirrelMail
+      fputs($fp, "MIME-Version: 1.0\n");
+      fputs($fp, "Content-Type: text/plain\n");
+      if ($reply_to != "")
+         fputs($fp, "Reply-To: $reply_to\n");
+
+      fputs($fp, "\n$body\n"); // send the body of the message
+
+      pclose($fp);
+   }
+
    function smtpReadData($smtpConnection) {
    function smtpReadData($smtpConnection) {
       $read = fgets($smtpConnection, 1024);
       $read = fgets($smtpConnection, 1024);
       $counter = 0;
       $counter = 0;
@@ -16,7 +72,7 @@
       }
       }
    }
    }
 
 
-   function sendMessage($smtpServerAddress, $smtpPort, $username, $domain, $t, $c, $b, $subject, $body, $version) {
+   function sendSMTP($username, $domain, $t, $c, $b, $subject, $body, $version) {
       include("../config/config.php");
       include("../config/config.php");
 
 
       $to = parseAddrs($t);
       $to = parseAddrs($t);
@@ -197,4 +253,4 @@
       }
       }
       return $err_num;
       return $err_num;
    }
    }
-?>
+?>

+ 2 - 2
src/compose_send.php

@@ -52,7 +52,7 @@
    $passed_bcc = stripslashes($passed_bcc);
    $passed_bcc = stripslashes($passed_bcc);
    $passed_subject = stripslashes($passed_subject);
    $passed_subject = stripslashes($passed_subject);
 
 
-   sendMessage($smtpServerAddress, $smtpPort, $username, $domain, $passed_to, $passed_cc, $passed_bcc, $passed_subject, $passed_body, $version);
+   sendMessage($username, $domain, $passed_to, $passed_cc, $passed_bcc, $passed_subject, $passed_body, $version);
 
 
    if ($auto_forward == true)
    if ($auto_forward == true)
       echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;URL=right_main.php\">";
       echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;URL=right_main.php\">";
@@ -64,4 +64,4 @@
    echo "You will be automatically forwarded.<BR>If not, <A HREF=\"right_main.php\">click here</A>";
    echo "You will be automatically forwarded.<BR>If not, <A HREF=\"right_main.php\">click here</A>";
    echo "</CENTER></FONT>";
    echo "</CENTER></FONT>";
 ?>
 ?>
-</BODY></HTML>
+</BODY></HTML>