[原创]解决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->mail
CC != "") $mailHeader .= "Cc: ".$this->mailCC. "\n";
if($this->mailBCC != "") $mailHeader .= "B
clearcase/" 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