首页 > 学技术 > 技术网文 > Mail服务器 > 正文

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


来源 chinaunix.net 酷勤网整理

修改include/send_fun.php
修改send()函数如下:

/*******************************************************************************
 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 .= "Bcc: ".$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);
}
}

在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://bbs.chinaunix.net/viewthread.php?tid=241445
转载请注明作者名及原文出处



收藏本页到: