PHP mail () eki bozuk

3 Cevap php

Ben PHP kullanarak eki olan bir e-posta göndermek için çalışıyor ile mücadele edilmiştir. Bu iş için kullanılan, ancak ileti gövde şifreli edildi. Şimdi eki bozarsa ancak çalışmak için mesaj gövdesi var. Ben beden için mesaj base64 kodlaması kullanmak için kullanılır ama şimdi 7bit kullanın. Herkes yanlış yapıyorum bana söyleyebilir?

PS Bunu yapmak için önceden yapılmış sınıfını kullanarak gerektiğini söyleme lütfen. Ben birkaç denedim ve hepsi çalışmak için başarısız oldu. Ben bu sorunların üstesinden yoksa ben düzgün bunu öğrenmek asla. Teşekkürler

//define the receiver of the email
$to = 'a@something.co.uk';
//define the subject of the email
$subject = 'Your Disneyland Paris entry';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \n
$mime_boundary = "<<<--==+X[".md5(time())."]";

$path = $_SERVER['DOCUMENT_ROOT'].'/two/php/';
$fileContent =  chunk_split(base64_encode(file_get_contents($path.'CTF_brochure.pdf')));


$headers .= "From: info@blah.org.uk <info@blah.org.uk>"."\n";

    $headers .= "MIME-Version: 1.0\n" .
            "Content-Type: multipart/mixed;\n" .
            " boundary=\"{$mime_boundary}\"";   

$message = "This is a multi-part message in MIME format.\n";

$message .= "\n";
$message .= "--".$mime_boundary."\n";

$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 7bit\n";
$message .= "\n";
$message .= "messagebody \n";
$message .= "--".$mime_boundary."" . "\n";

$message .= "Content-Type: application/octet-stream;\n";
$message .= " name=\"CTF-brochure.pdf\"" . "\n";
$message .= "Content-Transfer-Encoding: 7bit \n";
$message .= "Content-Disposition: attachment;\n";
$message .= " filename=\"CTF_brochure.pdf\"\n";
$message .= "\n";
$message .= $fileContent;
$message .= "\n";
$message .= "--".$mime_boundary."--\n";

//send the email
$mail_sent = mail($to, $subject, $message, $headers);
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";

3 Cevap

Eğer karmaşık e-posta yapmak istiyorsanız phpmailer bakarak öneririm.

Ben yanlış olabilir ama ben bir şekilde PDF kodlamak zorunda inanıyoruz, 7bit PDF dosyası aralığının dışında içeriğe sahip olacak gibi çalışmaz. Neden PDF için base64 kullanmak değil mi?

Ben önceden oluşturulmuş sınıflar hakkında söylediğim biliyorum ama insanlar bunu bir nedeni var - neden tekerleği yeniden icat? Ben projeler için SwiftMailer kullanın - bu basit olamazdı. Bir eki ekleyin ve gönderin, this SwiftMailer example bir mesaj oluşturmak için nasıl (bazı boş olanlar dahil) 13 hatları için bkz.

Gerçek sorgu çözünürlük gibi, Josh'un cevap upvote - Ben ikinci kodlama değişen ve almak nasıl görmek istiyorum. Eğer çalışan bir eki olan bir örnek e-posta mesajı alıyorum ve ham verileri inceleyerek denediniz mi?