• 29-04-2010, 00:58:08
    #1
    Php mail() fonksiyonu ile mail ve ek dosyası göndermek istiyorum. mail gövdesi olarak http://support.microsoft.com/?scid=k...6555&x=17&y=15 bu adresteki gibi fonksiyonumu yazdım.

    Herşey tamam olmasına rağmen mail gönderdiğimde dosyanın gövdesinde header içeriği çıkıyor. verdiğim adreste bunun mesaj gövdesinden önce boşluk bırakılmaması gerektiğini yoksa bu mesajın içeriğinde bu yazıların çıkabileceği yazıyor. şuan kodta bir boşluk yada hata göremiyorum.Saatlerdir bakıyorum bir şey gözümden kaçmış olabilir. Birde siz bakın.

    <?
    
    function MailDosyaGonder($smail,$sname,$rmail,$subject,$message,$filename,$path){
    	// (from), (from name), (to), (subject), (content)
    	$rmail = trim($rmail);
    	$smail = trim($smail);  
    	$subject = trim(stripslashes($subject));
    	$message = preg_replace("/( | | )/s", " ", trim(stripslashes($message))); //temizlik şart
    	$enewline ="\r\n"; //satır sonları için
    	$file = $path.$filename; //dosya yolu
        $file_size = filesize($file);
        $handle = fopen($file, "r");
        $content = fread($handle, $file_size);
        fclose($handle);
        $content = chunk_split(base64_encode($content));
        $uid = md5(uniqid(time()));
        $name = basename($file);
    		// Additional headers
    	$head = "MIME-Version: 1.0".$enewline;
    	$head .= "Content-Type: multipart/mixed; boundary=\"----=_NextPart_".$uid."\"".$enewline; 	
    	$head .= "From: ".$sname." <".$smail.">".$enewline;
    	$head .= "Reply-To: ".$smail.$enewline;
    	$head .= "X-Priority: 3".$enewline;
    	$head .= "X-Originating-IP: {$_SERVER['REMOTE_ADDR']}".$enewline;
    	$head .= "X-Originating-Email: ".$smail.$enewline;
    	$head .= "Organization: ".$sname.$enewline;
    	$head .= "Message-ID: <".md5(uniqid(time()))."@{$_SERVER['SERVER_NAME']}>".$enewline;
    	$head .= "X-Mailer: Microsoft Office Outlook, Build 11.0.5510".$enewline;
    	$head .= "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441".$enewline;
    	$head .= "X-Sender: ".$smail.$enewline;
    	$head .= "Importance: High".$enewline;
    	$head .= "X-Mgonderen_mail-Priority: High".$enewline;
    	$head .= "X-AntiAbuse: This is a solicited email.".$enewline;
    	$head .= "X-AntiAbuse: Servername - {$_SERVER['SERVER_NAME']}".$enewline;
    	$head .= "X-AntiAbuse: User - ".$smail.$enewline;
    	$head .= "Date: ".date("r").$enewline;	
    	$head .= "Return-Path: ".$smail.$enewline;
        $head .= "This is a multi-part message in MIME format".$enewline;
    	$head .= "This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible.".$enewline;
        $head .= "----=_NextPart_".$uid.$enewline;
        $head .= "Content-type:text/plain;".$enewline;
    	$head .= "charset=\"iso-8859-9\"".$enewline;
    	$head .= "Content-Transfer-Encoding: 7bit".$enewline;
        $head .= $message.$enewline;
        $head .= "----=_NextPart_".$uid.$enewline;	
        $head .= "Content-Type: application/octet-stream; name=\"".$name."\"".$enewline; // use different content types here
        $head .= "Content-Transfer-Encoding: base64".$enewline;
        $head .= "Content-Disposition: attachment; filename=\"".$filename."\"".$enewline;	
    	$head .= $content.$enewline;
    	$head .= "----=_NextPart_".$uid."--";
    	ini_set("sendmail_from","xxxx@xxxx.net");
    	return(@mail($rmail, $subject, "", $head));
    }
    
    $my_file = "deneme.csv";
    $my_path = "";
    if(is_file($my_path.$my_file)){ echo "dosya var";} else { echo "dosya yok";}
    if(MailDosyaGonder('xxxx@xxxx.net','xxxx.net',"xxxx@xxxx.com","deneme maili dosyali","dosya ektedir",$my_file,$my_path)) { echo "mail atıldı"; }
    ?>
    Hatta bunun header çıktısını vereyim :
    MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_ea7e87833e55510bb9301f5d8399f623" From: Feribot.net Reply-To: info@feribot.net X-Priority: 3 X-Originating-IP: 95.14.190.242 X-Originating-Email: info@feribot.net Organization: Feribot.net Message-ID: X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 X-Sender: info@feribot.net Importance: High X-Mgonderen_mail-Priority: High X-AntiAbuse: This is a solicited email. X-AntiAbuse: Servername - 85.17.74.71 X-AntiAbuse: User - info@feribot.net Date: Wed, 28 Apr 2010 21:54:25 +0000 Return-Path: info@feribot.net This is a multi-part message in MIME format This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ----=_NextPart_ea7e87833e55510bb9301f5d8399f623 Content-type:text/plain; charset="iso-8859-9" Content-Transfer-Encoding: 7bit dosya ektedir ----=_NextPart_ea7e87833e55510bb9301f5d8399f623 Content-Type: application/octet-stream; name="cemal.csv" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cemal.csv" UmV6SWQ7R3V6ZXJnYWg7U2VmZXJUYXJpaGk7QWT9O1NveWFk/TtEb2d1bVRhcmloaTtDaW5zaXll dDtDb3VudHJ5O1RpY2tldFR5cGU7TnVsbDtOdWxsO0T2bvz+VGFyaWhpO0T2bvz+U2FhdGkKMTAt MzI0NDU7TWFybWFyaXM9Pv7nafzwcDs3ODk7NDU2Ozc4OTs0NTY7Nzg5OzQ1Njs3ODk7NDU2Ozc4 OTs0NTY7Nzg5OzQ1Njs3ODk7NDU2Ozc4OTs0NTY7Nzg5OzQ1Njs3ODk7NDU2Ozc4OQo= ----=_NextPart_ea7e87833e55510bb9301f5d8399f623--
    Çıktıda base64 lü dosya içeriği de görünüyor.
  • 29-04-2010, 13:19:42
    #2
    Üyeliği durduruldu
    php mailler class gibi birsey vardi. ekli dosyada gonderebiliyordunuz. manuel kendiniz yazmaniz cok fazla zamaninizi alir rutin bir islem bu zaten
  • 29-04-2010, 20:44:56
    #3
    ufak bir sorun yüzünden koca class kullanmak istemiyorum

    Bir öncekinde yaptığım hata ayraçların (boundry) sonunda white space (boşluk) bırakmam olmuş. Fakat onu farkettikten sonra hotmail ve outlookta sağlam gözükse de gmail de hala sorunlu gözüküyordu nette dolaşırken yabancı bir arkadaşın şu aşağıdaki gövdeyi kullandığını gördüm. Gmail ve diğer maillerde denedim güzel bir şekilde çalışıyor. ihtiyacı olanlar denesin. >>>

    <?
    
    $to = 'xxxxx@hotmail.com';
    
    $subject = 'Ek dosyalı mesaj';
    //Bu iki ayraç kesinlikle farklı olmalı 
    $boundary1 = rand(0,9)."-".rand(10000000000,9999999999)."-".rand(10000000000,9999999999)."=:".rand(10000,99999);
    $boundary2 = rand(0,9)."-".rand(10000000000,9999999999)."-".rand(10000000000,9999999999)."=:".rand(10000,99999);
    
    
    $fileContent =  chunk_split(base64_encode(file_get_contents('deneme.csv')));
    
    $txt_message = "Email içeriği buraya gelecek \r\n";
    
    $html_message = "Html mail göndermek istiyorsanız: <br /> buradan ";
    
    $headers     =<<<AKAM
    From: info@ccc.net <info@ccc.net>
    MIME-Version: 1.0
    Content-Type: multipart/mixed;boundary="$boundary1"
    AKAM;
    
    $attachment = <<<ATTA
    --$boundary1
    Content-Type: application/octet-stream;name="deneme.csv"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;filename="deneme.csv"
    
    $fileContent
    
    ATTA;
    
    $body = <<<AKAM
    This is a multi-part message in MIME format.
    
    --$boundary1
    Content-Type: multipart/alternative;boundary="$boundary2"
    
    --$boundary2
    Content-Type: text/plain;charset=ISO-8859-9;Content-Transfer-Encoding: 7bit
    
    $txt_message
    --$boundary2
    Content-Type: text/html;charset=ISO-8859-9;Content-Transfer-Encoding: 7bit
    
    $html_message
    
    --$boundary2--
    
    $attachment
    --$boundary1--
    AKAM;
    
    
    $mail_sent = @mail($to, $subject, $body, $headers);
    
    echo $mail_sent ? "Mail gönderildi" : "Mail gönderilemedi";
    ?>