[原创]解决postfix环境下igenus的Return-Path问题(使用smtp)

发表于:2007-06-08来源:作者:点击数: 标签:
修改include/send_fun. php 修改send()函数如下: [code:1:6a1d997eb3] /******************************************************************************* Functionsend Descriptionsendstheemail Argumentsnone Returnstrueifsent *********************

修改include/send_fun.php
修改send()函数如下:
[code:1:6a1d997eb3]
/*******************************************************************************
 Function: send()
 Description:   sends the email
 Arguments:  none
 Returns:   true if sent
*******************************************************************************/
 function send($SaveTo,$Path){
    global $CFG_GMT, $REMOTE_ADDR, $G_NICKNAME;
    
     $subject = encode_mime($this->mailSubject,$this->Encoding,$this->Charset);
      
  $FromName = encode_mime($this->mailFromname,$this->Encoding,$this->Charset);
  $FromEmail = "\"".$FromName."\" <".$this->mailFrom.">";

  $mailHeader =  "";
  $mailHeader .=  "Return-Path: <".$this->mailFrom.">\n";
  if($this->mailCC != "") $mailHeader .= "Cc: ".$this->mailCC. "\n";
  if($this->mailBCC != "") $mailHeader .= "Bclearcase/" target="_blank" >cc: ".$this->mailBCC. "\n";
  $mailHeader .="Subject:".$subject."\n";
  if($this->mailFrom != "") $mailHeader .= "From: ".$FromEmail. "\n";
  $mailHeader .= "Date: " . $this->setDate($CFG_GMT) ."\n";
  if($this->mailPriority != "") $mailHeader .= "X-Priority: ".$this->mailPriority. "\n";
  $mailHeader .= "X-Mailer: iGENUS webmail 3.0\n";
  $mailHeader .= "X-Originating-IP: [$REMOTE_ADDR]\n";

//---------------------------MESSAGE TYPE-------------------------------
// Without-Attachment
if($this->mailAttachments==""){
//--TEXT ONLY
  if( $this->mailText!="" && $this->mailHTML==""){
$textHeader = $this->formatTextHeader();
$mailHeader .= $textHeader;
  }
//--HTML ONLY
  if($this->mailText=="" && $this->mailHTML!=""){
$htmlHeader = $this->formatHTMLHeader();
$mailHeader .= $htmlHeader;
  }
  if($this->mailText!="" && $this->mailHTML!=""){
 //--get random boundary for content types
$bodyBoundary = $this->getRandomBoundary();
 //--format headers
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
 //--set MIME-Version
$mailHeader .=  "MIME-Version: 1.0\n";
 //--set up main content header with boundary
$mailHeader .=  "Content-Type: multipart/alternative;\n";
$mailHeader .=  "\tboundary=\"$bodyBoundary\"";
$mailHeader .=  "\n\n";
 //--add body and boundaries
$mailHeader .=  "--".$bodyBoundary. "\n";
$mailHeader .= $textHeader;
$mailHeader .=  "\n--".$bodyBoundary. "\n";
 //--add html and ending boundary
$mailHeader .= $htmlHeader;
$mailHeader .=  "\n--".$bodyBoundary. "--";

  }
 // With Attachment
}else {
  //--get random boundary for attachments
$attachmentBoundary = $this->getRandomBoundary();
 //--set main header for all parts and boundary
$mailHeader .=  "MIME-Version: 1.0\n";
$mailHeader .=  "Content-Type: multipart/mixed;\n";
$mailHeader .=  ' boundary="'.$attachmentBoundary. '"'. "\n\n";
$mailHeader .=  "This is a multi-part message in MIME format.\n\n";
$mailHeader .=  "--".$attachmentBoundary. "\n";   

//--TEXT ONLY
  if( $this->mailText!="" && $this->mailHTML==""){
$textHeader = $this->formatTextHeader();
$mailHeader .= $textHeader;
  }
//--HTML ONLY
  if($this->mailText=="" && $this->mailHTML!=""){
$htmlHeader = $this->formatHTMLHeader();
$mailHeader .= $htmlHeader;
  }
  
  if($this->mailText!="" && $this->mailHTML!=""){
 //--TEXT AND HTML--
 //--get random boundary for content types
$bodyBoundary = $this->getRandomBoundary(1);
 //--format headers
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
 //--set up main content header with boundary
$mailHeader .=  "Content-Type: multipart/alternative;\n";
$mailHeader .=  "\tboundary=\"$bodyBoundary\"\n\n";

 //--add body and boundaries
$mailHeader .=  "--".$bodyBoundary. "\n";
$mailHeader .= $textHeader."\n";
$mailHeader .=  "--".$bodyBoundary. "\n";
 //--add html and ending boundary
$mailHeader .= $htmlHeader;
$mailHeader .=  "\n--".$bodyBoundary. "--\n";
 //--send message
 //--END TEXT AND HTML
}
 //--get array of attachment filenames
$attachmentArray = explode( ",",$this->mailAttachments);
 //--loop through each attachment
for($i=0;$i<count($attachmentArray);$i++){
  $mailHeader .=  "\n--".$attachmentBoundary. "\n";
  $mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .=  "--".$attachmentBoundary. "--";
}
if($SaveTo=='Backup'){
($FD_BACKUP = fopen($Path,"w")) || die("Error open $Path");
$BackMeg = "To: ".$this->mailTo."\n";
$BackMeg .= "Subject: ".$subject."\n";
$BackMeg .= $mailHeader;
$Slen = strlen($BackMeg);
fputs($FD_BACKUP,$BackMeg,$Slen);
fclose($FD_BACKUP);
return;
}else{
// return mail($this->mailTo,$subject,"",$mailHeader);
$connect = fsockopen ("localhost", 25, $errno, $errstr, 30) or die("Could not talk to the sendmail server!"); 
$rcv = fgets($connect, 1024); 

fputs($connect, "HELO localhost\r\n"); 
$rcv = fgets($connect, 1024); 

fputs($connect, "MAIL FROM:$this->mailFrom\r\n"); 
$rcv = fgets($connect, 1024);

$addressArray=explode(",",$this->mailTo);
for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i]));
{
fputs($connect, "RCPT TO:$addressArray[$i]\r\n");
$rcv = fgets($connect, 1024);
}
}

$addressArray=explode(",",$this->mailCC);
for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i]));
{
fputs($connect, "RCPT TO:$addressArray[$i]\r\n");
$rcv = fgets($connect, 1024);
}
}

$addressArray=explode(",",$this->mailBCC);
for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i]));
{
fputs($connect, "RCPT TO:$addressArray[$i]\r\n");
$rcv = fgets($connect, 1024);
}
}
fputs($connect, "DATA\r\n"); 
$rcv = fgets($connect, 1024); 

fputs($connect, $mailHeader."\r\n"); 
fputs($connect, ".\r\n");
$rcv = fgets($connect, 1024); 

fputs($connect, "RSET\r\n"); 
$rcv = fgets($connect, 1024);

fputs ($connect, "QUIT\r\n"); 
$rcv = fgets ($connect, 1024); 

fclose($connect);
}
}
[/code:1:6a1d997eb3]
在freebsd+postfix环境下测试通过~~~~~~

 xmy 回复于:2004-01-11 23:37:43
支持一下,最好能把修改后的整个igenus安装包放到网上给大家,如果没有地方放,PM我。

 netkiller 回复于:2004-05-14 11:07:26
最好做成*.dff

 chaohu 回复于:2005-05-27 21:19:02
我按照你说的,把后面一段代码加进去,确定解决了问题,但同时也出现了新的问题:


那就是所有的邮件都就成无标题的了.

原文转自:http://www.ltesting.net