0

以下のコードを使用して、メールで画像添付ファイルを送信しようとしています。

22 行目の emailClass.php ファイルに問題がありますfread(...)。その行の前に何かをエコーすると正常にエコーされ、この行の後に何かをエコーするとエコーされないため、freadステートメントに何か問題があることがわかります。

大丈夫です:チェックしたfileattところ、フルパスが出力されました。PNGファイルと500KBのJPGで試しました。次に、いくつかのテキスト ファイルを試してみましたが、まだ何もありません。

この問題を修正するにはどうすればよいですか?

index.php:

<?php
include "emailClass.php";

$testEmail = new email();
$from = 'someone@gmail.com';
$senfTo = 'someone@gmail.com';
$subject = 'email with attachment';
$bodyHead = 'welcome';
$bodyMain = 'bodyMain writings';
$bodyEnd = 'Thank you';
$filePath = '...';
$fileName = 'check.txt';
if($testEmail->emailWithAttach($from,$sendTo,$subject,$bodyHead,$bodyMain,$bodyEnd,$filePath,$fileName))
{
    echo "Email Sent Successfuly";
}
else
{
    echo "Failes sending";
}
?>

emailClass.php:

<?php
class email
{
    function emailWithAttach($fromaddress,$toAddress,$mailSubject,$mailMessageHead,$mailMessageMain,$mailMessageSign,$filePath,$fileName)
    {

        $fileatt_name = $fileName;
        $fileatt = $filePath.$fileName;
        $fileatt_type = "application/octet-stream";

        $email_from = $fromAddress;
        $email_subject = $mailSubject;

        $email_message = $mailMessageHead."<br>";
        $email_message .= $mailMessageMain."<br>";
        $email_message .= $mailMessageSign;
        $email_to = $toAddress;
        $headers = "From: ".$email_from;

        $file = fopen($fileatt,"rb");
        echo $fileatt;                  //prints ok the correct pathname!!
        $data = fread($file,$filesize($fileatt));
        echo "check";                   //not printing which means something's wrong with line 22 the fread..
        fclose($file);

        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_X{$semi_rand}X";

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

        $email_message .= "This is a multi-part message in mime format.\n\n" .
        "--{$mime_boundary}\n" .
        "Content-Type:text/html; charset=\"iso-8859-1\"\n" .
        "Content-Transfer-Encoding: 7bit\n\n" .
        $email_message .= "\n\n";

        $data = chunk_split(base64_encode($data));

        $email_message .= "--{$mime_boundary}\n" .
        "Content-Type: {$fileatt_type};\n" .
        " name=\"{$fileatt_name}\"\n" .
        "Content-Transfer-Encoding: base64\n\n" .
        $data .= "\n\n" .
        "--{$mime_boundary}--\n";

        if (@mail($email_to, $email_subject, $email_message, $headers))
        {
            return true;
        }
    }
}
?>   
4

0 に答える 0