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

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

修改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环境下测试通过~~~~~~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航