0

ユーザーが入力した file upload でフォームを送信しようとしていますが、何らかの理由でメールが送信されないようです。問題は、どこに間違いがあるかを理解するためのエラーが発生しないことです。

すべての前に、私はそれを行うためにライブラリを使用したくありません。シンプルに保ちたいです。

コードは次のとおりです。

<?php  

if(isset($_POST['Submit'])){
    $strTo = "my.email@address.com";  
    $strSubject = "Purchase request from " . $_POST["formName"] . $_POST["formSurname"];  
    $strMessage = nl2br($_POST["formName"] . $_POST["formEmail"] . $_POST["formInstitute"] . $_POST["formCourse"] . $_POST["formNotes"]);  

    //*** Uniqid Session ***//  
    $strSid = md5(uniqid(time()));  

    $strHeader = "";  
    $strHeader .= "From: ".$_POST["formEmail"]."<".$_POST["formEmail"].">\nReply-To: ".$_POST["formEmail"]."";  

    $strHeader .= "MIME-Version: 1.0\n";  
    $strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n";  
    $strHeader .= "This is a multi-part message in MIME format.\n";  

    $strHeader .= "--".$strSid."\n";  
    $strHeader .= "Content-type: text/html; charset=utf-8\n";  
    $strHeader .= "Content-Transfer-Encoding: 7bit\n\n";  
    $strHeader .= $strMessage."\n\n";  

    //*** Attachment ***//  
    if($_FILES["fileAttach"]["name"] != "")  
    {  
        $strFilesName = $_FILES["fileAttach"]["name"];  
        $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"])));  
        $strHeader .= "--".$strSid."\n";  
        $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n";  
        $strHeader .= "Content-Transfer-Encoding: base64\n";  
        $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";  
        $strHeader .= $strContent."\n\n";  
    }  

    $flgSend = mail($strTo,$strSubject,null,$strHeader);  // @ = No Show Error //  

    if($flgSend)  
    {  
        echo "Mail send completed.";  
    }  
    else  
    {  
        echo "Cannot send mail.";  
    }  
}
?>

フォームは次のとおりです。

    <form action="#!/studentform.2ndphase" method="post" name="form1" enctype="multipart/form-data">  
        <table width="500">  
        <tr>  
            <td>שם פרטי: </td>  
            <td><input name="formName" type="text" id="name"></td>  
        </tr>  
        <tr>  
            <td>שם משפחה: </td>  
            <td><input name="formSurname" type="text" id="surname"></td>  
        </tr>  
        <tr>  
            <td>דואר אלקטרוני: </td>  
            <td><input name="formEmail" type="text"></td>  
        </tr>  
        <tr>  
            <td>מוסד אקדמי: </td>  
            <td><input name="formInstitute" type="text"></td>  
        </tr>  
            <td>מסלול: </td>  
            <td><input name="formCourse" type="text"></td>  
        </tr> 
        <tr>  
            <td>הערות</td>  
            <td><textarea name="formNotes" cols="30" rows="4" id="formNotes"></textarea></td>  
        </tr>  

        <tr>  
        <td>Attachment</td>  
        <td><input name="fileAttach" type="file"></td>  
        </tr>  
        <tr>  
        <td>&nbsp;</td>  
        <td><input type="submit" name="Submit" value="שלח"></td>  
        </tr>  
        </table>  
    </form>  

私はphpに基づくフレームワークを使用しているため、アクションは別のページに誘導されます。これがリンクが次のように設定されている理由です#!studentform.2ndphase

助けてくれてありがとう。

4

1 に答える 1

1

新しいphpファイルを作成し、これを追加します

<?php
phpinfo();
?>

アップロードしてブラウザで開き、ページを下にスクロールして「sendmail_path」が空かどうかを確認するか、無効になっている機能を見つけてください。ホストによってメール機能が無効になっている可能性があります。

または、小さな関数を実行してチェックすることもできます。

<?php
$to      = 'you@yourdomain.com';
$subject = 'Mail test';
$message = 'This is a test email';
$headers = 'From: you@yourdomain.com' . "\r\n" .
   'Reply-To: you@yourdomain.com' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?> 

「you@yourdomain.com」を自分のメールアドレスに変更します

{アップデート}

別の電子メールシステムを使用して送信できます。またはSMTPスクリプトを使用する

私が好きなもの:htmlMimeMail5

<?php
require_once("htmlMimeMail5.php");
$mail = new htmlMimeMail5();
$mail->setFrom("YourName <you@example.com>");
$mail->setSubject('Test email');
$mail->setHTML('<body background="background.gif"><b>Sample HTML</b></body>');
$mail->send(array('sentto@example.com'));
?>
于 2012-10-31T10:05:12.253 に答える