$from = "test@localhost.com";
$to = "test@localhost.com";
$subject =$_POST['subject'];
$message = $_POST['body'];
// include the from email in the headers
$headers = "From: $from";
// boundary
$time = md5(time());
$boundary = "==Multipart_Boundary_x{$time}x";
// headers used for send attachment with email
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$boundary}\"";
// multipart boundary
$message = "--{$boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
// Fily Type Validation
$allowedExtensions = array("jpeg","jpg");
// attach the attachments to the message
$files = $_FILES['imgupload'];
for($i=0; $i < count($files['name']); $i++)
{
if ($files['name'][$i] != '')
{
$file_name = $files['name'][$i];
$file_path = pathinfo($file_name);
$file_ext = $file_path['extension'];
if (in_array($file_ext, $allowedExtensions))
{
$tmp_name = $files['tmp_name'][$i];
$content = chunk_split(base64_encode(file_get_contents($tmp_name)));
$message .=
"--{$boundary}\n" .
"Content-Type: {\"application/octet-stream\"};\n" .
" name=\"{$file_name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$file_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" . $content . "\n\n";
} else { $errormgs= 'alert("File Type is not accepted, please use an image.")'; $formerrors = 'true'; }
} // else { $errormgs= 'alert("You Forgot to Attach the Photo")'; $formerrors = 'true'; }
}
// sending mail
if (!$formerrors)
{
$sendmail = mail($to, $subject, $message, $headers);
} else
{
print '<script type="text/javascript">';
print $errormgs;
print '</script>';
}
これは私が書いたスクリプトで、追加の添付入力フィールドごとに PHP コードを変更することなく、フォームにできるだけ多くの入力フィールドを作成し、専用の電子メールに添付ファイルを配信できるようにします。
私が抱えている唯一の問題は、添付フィールドのアラートです。ファイルが選択されていない場合は、画像の追加を要求するメッセージがポップアップ表示されます。何らかの理由で機能しません。メッセージを含むelseステートメントを追加すると、画像を追加するかどうかに関係なく、フォームはそのアラートを出し続けます。私は何を間違っていますか?
助けてくれてありがとう、そして私が自分自身を悪く表現しているなら、私の言葉でごめんなさい。