0

2 つのスクリプトを 1 つのスクリプトにまとめたので、必要な処理を実行できました。しかし、そうではありません。どういうわけか、電子メールの添付部分が正常に機能しておらず、さまざまな変更を試みましたが、機能しません。

問題

メールボックスで、受信者は次の添付ファイル (filename.pdf.pdf .dat) を受け取ります。これは filename.pdf である必要があります。

私が使用しているスクリプトとhtmlフォームの下に追加しました。両方のページから、質問をより明確にするために、添付ファイルに関係するコードのみを追加します。

これは send.php の一部です:

    <form action="send_script.php" method="post" name="form1" id="form1" enctype="multipart/form-data">
    <div><input type="file" name="fileAttach" value="Zoeken"></div>
    <div><input type="submit" name="Submit" value="Verzenden"></div>
    </form>

これは send_script.php の一部です:

if($_FILES["fileAttach"]["name"] != "")
{
    $strFilesName = $_FILES["fileAttach"]["name"];
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
}

    ob_start(); //Turn on output buffering 
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: application/octet-stream; name="<?php echo $strFilesName?>"  
    Content-Transfer-Encoding: base64  
    Content-Disposition: attachment; filename="<?php echo $strFilesName?>" 
    <?php echo $strContent; ?> 
    $message = ob_get_clean(); 
    $mail_sent = @mail( $to, $subject, $message, $headers ); 
    echo $mail_sent ? "Mail sent" : "Mail failed"; 
    ?>

編集1 上記のコードは、以下のコメントの助けを借りて変更されました。これまで私を助けてくれた皆さんに感謝します。ファイルは現在、op を test.pdf として正しく表示しており、名前は test でした。それで完璧です。唯一の問題は、次のエラーが発生して開くことができないことです。

エラー Adob​​e Acrobat: メールの添付ファイルとして送信され、正しくデコードされませんでした!

編集2 上記のコードをあきらめて、以下を変更するように設定して、動的な名前を取得してpdfで動作するようにします。

   $attachment = chunk_split(base64_encode(file_get_contents('attachment.zip')));

   --PHP-mixed-<?php echo $random_hash; ?>  
   Content-Type: application/zip; name="attachment.zip"  
   Content-Transfer-Encoding: base64  
   Content-Disposition: attachment  
   <?php echo $attachment; ?> 

私はこれまでに変更しました:

    $attachment = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"])));
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: application/octet-stream; name="eenbestand.pdf"  
    Content-Transfer-Encoding: base64  
    Content-Disposition: attachment  
    <?php echo $attachment; ?> 

ファイルを受信できるようになり、正しく開くことができますが、動的な名前が表示されます!

4

2 に答える 2

-1

私は、仕事をしてくれる適切なコードを入力するだけで答えます。私を助けてくれたみんな、ありがとう。

    if($_FILES["fileAttach"]["name"] != "")
{
    $strFilesName = $_FILES["fileAttach"]["name"];
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
    $headers .= "--".$strSid."\n";
    $headers .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $headers .= "Content-Transfer-Encoding: base64\n";
    $headers .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
    $headers .= $strContent."\n\n";
}
于 2013-10-07T15:50:58.977 に答える