2016-03-01 43 views
0

我发送自动电子邮件从我的网络服务器,它工作正常......除了我收到的电子邮件(在Microsoft Outlook)有一个随机的空白文本文件(ATT00001.txt)出现。我不想将任何东西附加到我的出站电子邮件。我的所有搜索都显示如何附加...而我想要相反的...如何不附加任何东西!我究竟做错了什么?谢谢!PHP的邮件()的作品,但随机空的附件出现

$uid = md5(uniqid(time())); 
     $eol = PHP_EOL; 

     $header = "From: Website Admin <".$MessageFrom.">".$eol; 
     $header .= "Reply-To: ".$MessageFrom.$eol; 

     //now add (optional) CC and BCC 
     if($CcMessageTo!=''){ $header .= "Cc: $CcMessageTo".$eol; } 
     if($BccMessageTo!=''){ $header .= "Bcc: $BccMessageTo".$eol; } 

     //the next line is to request a read reciept 
     if($RequestReadReceipt=='yes'){ $header .= "Disposition-Notification-To: ".$MessageFrom.$eol; } 

     $header .= "MIME-Version: 1.0".$eol; 
     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\""; 

     $message = "--".$uid.$eol; 
     $message .= "Content-Type: text/html; charset=ISO-8859-1".$eol; 
     $message .= "Content-Transfer-Encoding: 8bit".$eol; 
     $message .= $MessageBody.$eol; 
     $message .= "--".$uid.$eol; 

     //add an additional parameter to help not get blocked as spam 
     $AdditionalParameters = "-f$MessageFrom"; 

     mail($MessageTo, $MessageSubject, $message, $header, $AdditionalParameters); 

唯一有用的,我发现是显然的ExchangeServer不喜欢见文前附件(虽然我不认为我是在发送附件)。这里是我发现的链接: http://kb.mit.edu/confluence/pages/viewpage.action?pageId=4981187

+0

我的猜测是multipart/mix – Mistergreen

回答

0

原来的问题是Content-Type:multipart/mixed在头部的顶部。这显然告诉电子邮件客户端不仅仅期望电子邮件内容......因此它为缺少的附件组成了一些填充。当我改变了从

内容类型:多重/混合

的Content-Type:text/html的

一切都开始工作。当然,我还做了一些调整,包括在需要时添加PDF附件的能力(仅作为故障排除的一部分) - 所以这里是我最终调整后的结果。希望这有助于某一天。

if($Attachment) 
{ 
    $filename = $AttachmentName; 
    $file = $_SERVER['DOCUMENT_ROOT'].$AttachmentSrc; 
    $file_size = filesize($file); 
    if($file_size > 0) 
    { 
     $handle = fopen($file, "r"); 
     $filecontent = fread($handle, $file_size); 
     fclose($handle); 
     $attachment = chunk_split(base64_encode($filecontent)); 
     $IncludeAttachment = 'yes'; 
    } 
} 

$uid = md5(uniqid(time())); 

$header = "From: ".$MessageFromName." <".$MessageFromEmail.">".$eol; 
$header .= "Reply-To: ".$MessageFromEmail.$eol; 
if($CcMessageTo!=''){ $header .= "Cc: $CcMessageTo".$eol; } 
if($BccMessageTo!=''){ $header .= "Bcc: $BccMessageTo".$eol; } 
if($RequestReadReceipt=='yes'){ $header .= "Disposition-Notification-To: ".$MessageFromEmail.$eol; } 
$header .= "MIME-Version: 1.0".$eol; 
if($IncludeAttachment == 'yes') 
{ 
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\""; 
    $message = "--".$uid.$eol; 
    $message .= "Content-Type: text/html; charset=UTF-8".$eol; 
    $message .= "Content-Transfer-Encoding: quoted-printable".$eol.$eol; 
    $message .= quoted_printable_encode($MessageBody).$eol; 
    $message .= "--".$uid.$eol; 
    $message .= "Content-Type: application/pdf; name=\"".$filename."\"".$eol; 
    $message .= "Content-Transfer-Encoding: base64".$eol; 
    $message .= "Content-Disposition: attachment; filename=\"".$filename."\"".$eol.$eol; 
    $message .= $attachment.$eol; 
    $message .= "--".$uid."--"; 
} 
else 
{ 
    $header .= "Content-Type: text/html; charset=UTF-8".$eol; 
    $header .= "Content-Transfer-Encoding: quoted-printable".$eol.$eol; 
    $message .= quoted_printable_encode($MessageBody).$eol; 
} 

$AdditionalParameters = "-f$MessageFromEmail"; 

mail($MessageTo, $MessageSubject, $message, $header, $AdditionalParameters);