2012-04-18 11 views
0

PHPプログラミングの新機能です。私は添付ファイルを含むフォームを作成しようとしました。私はそれをテストしたが、私の電子メールにフォームを送信できませんでした。もし私が何かを見逃してしまったら、私のPHPコードを見てください。あなたの指導のために事前にありがとうございます。PHPメールフォームを送信できませんでした

エラーメッセージは次のとおりです。 警告:mail()[function.mail]:mail()関数のパラメータが不正です。メールは送信されません。 "$ sendMail = mail($ sendTo、$ mailSubject、null、$ header);"という行を指しています。以下は

私のPHPコードです:F3rr31r4 @

<?php 

/*Retrive inputs from the form */ 
//Required fields 
$fullName = $_POST["Fullname"]; 
$gender = $_POST["genderRadioGroup"]; 
$DOB = $_POST["DOB"]; 
$address = $_POST["Address"]; 
$state = $_POST["State"]; 
$zipCode = $_POST["Zipcode"]; 
$contactNo = $_POST["Contact"]; 
$emailAdd = $_POST["Email"]; 


//Optional fields 
// If applicant filled the field, take it. Else, make it " - ". 
$nickName = $_POST["Nickname"]; 
if($nickName!="") 
{ 
    $nickName = $nickName; 
} 
else 
{ 
    $nickName = " - "; 
} 

$description = $_POST["Description"]; 
if($description!="") 
{ 
    $description = $description; 
} 
else 
{ 
    $description = " - "; 
} 

//Message content 
$message = <<<EOD 
<br><hr><br> 
Full Name: $fullName <br> 
Nickname: $nickName <br> 
Gender: $gender <br> 
Date of Birth: $DOB <br> 
Address: $address <br> 
State: $state <br> 
Zip Code: $zipCode <br> 
Contact Number: $contactNo <br> 
E-mail address: $emailAdd <br> 
Description: $description <br> 
EOD; 

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

/* Header */ 
//Sender 
$header = "From: $fullName <$emailAdd> \n"; 
$header .= "Reply-To: $emailAdd \n"; 
//MIME 
$header .= "MIME-Version: 1.0 \n"; 
$header .= "Content-type: multipart/mixed; boundary=\"".$sessionID."\"\n\n"; 
$header .= "This is a multi-part message in MIME format. \n"; 

$header .= "-- $sessionID \n"; 
$header .= "Content-type: text/html; charset=utf-8 \n"; 
$header .= "Content-transfer-encoding: 7bit \n\n"; 
$header .= "$message \n\n"; 

/* Attachment */ 
if($_FILES["Attachment"]["name"] != "") //If there is attachment 
{ 
    //Variables 
    $fileName = $_FILES["Attachment"]["name"]; 
    $fileContent = chunk_split(base64_encode(file_get_contents($_FILES["Attachment"]["tmp_name"]))); 

    //Adding attachment to header 
    $header .= "-- $sessionID \n\n"; 
    $header .= "Content-Type: application/octet-stream; name=\"".$fileName."\"\n"; 
    $header .= "Content-Transfer-Encoding: base64 \n"; 
    $header .= "Content-Disposition: attachment; filename=\"".$fileName."\"\n\n"; 
    $header .= $fileContent."\n\n"; 
} 

/* Send Mail */ 
// Recipient 
$sendTo = "[email protected]"; 
$mailSubject = "The Form - $fullName"; 
$sendMail = mail($sendTo, $mailSubject, null, $header); 

if($sendMail) 
{ 
    echo "Thank you!"; 
} 
else 
{ 
    echo "An error occured."; 
} 
?> 
+0

メールの内容をヘッダーに埋め込みます。電子メールの書式設定が不完全で、行末が間違っています....あなた自身のために多くの苦痛を払わずに、あなたのためにこれを行うためのツールを見つけてください。(phpmailerまたはswiftmailer) – symcbean

答えて

1

私はすべてのあなたのコードをご確認ください..しかし...しませんでした

mail( $to,   $subject,  $message,  $headers); 
    mail( $sendTo, $mailSubject,  null,  $header); 

http://php.net/manual/en/function.mail.php

+0

あなたの迅速な対応に感謝します。私が参照したウェブサイトから学んだように、$ヘッダーにはメッセージの内容が既に含まれているため、$メッセージは "null"になります。違いますか? – user1340749

+0

私はこれまでこれまで苦労していましたが、すべての正しいヘッダーなどを設定するクラス(http://phpmailer.worxware.com/など)を使用することをお勧めします。 – SativaNL

+0

はい、オリジナルはメールです(文字列$、文字列$件名、文字列$メッセージ[、文字列$ additional_headers [、文字列$ additional_parameters])......マニュアルと例を確認してください;)今、あなたは失敗したと言います送信するには、msgのエラーは何ですか? – F3rr31r4

0

それは警告が表示さ:メールを()[function.mail]:mail()関数へのパラメータが不正です。メールは送信されません。 $ sendMail = mail($ sendTo、$ mailSubject、null、$ header)という行を指しています。また、コードの最後にIF文に入れた「エラーが発生しました。」というテキストも表示されます。 - user1340749

1. Check your PHP version 
2. print("<pre>" . $header . "</pre>"); and check your msg 
+0

私はテストしましたが、ここに出力をどのように表示しますか?画像に添付されているので、多くの行があります。 – user1340749

+0

他のmsgを削除してもらえますか、問題を修正しましたか? – F3rr31r4

関連する問題