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