Browse Source

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

nehresma 25 năm trước cách đây
mục cha
commit
11aa25ead5
3 tập tin đã thay đổi với 65 bổ sung4 xóa
  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";
     $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
     $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.
     **/
 
+   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) {
       $read = fgets($smtpConnection, 1024);
       $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");
 
       $to = parseAddrs($t);
@@ -197,4 +253,4 @@
       }
       return $err_num;
    }
-?>
+?>

+ 2 - 2
src/compose_send.php

@@ -52,7 +52,7 @@
    $passed_bcc = stripslashes($passed_bcc);
    $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)
       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 "</CENTER></FONT>";
 ?>
-</BODY></HTML>
+</BODY></HTML>