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 years ago
parent
commit
11aa25ead5
3 changed files with 65 additions and 4 deletions
  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>