Это мой скромный ответ. Я немного отформатировал ваш код и создал автономную версию (с простым стилем ^^).
Демонстрационная версия: http://kopli.pri.ee/stackoverflow/6935517.php
(Пожалуйста, не злоупотребляйте моей маленькой почтовой службой)
В двух словах, кажется, что $_POST["submit"]
был главной проблемой. Однако возможно, что я исправил какой-то другой критический аспект и забыл его отметить.
ПРИМЕЧАНИЕ: Возможно, ваш скрипт работал каким-то образом, но антиспам-системы ваших провайдеров электронной почты пометили его как спам ?! Кроме того, если ваша страница была закодирована неправильно, возможно, возникли конфликты с форматом письма UTF-8 ...
Я хотел бы дать вам несколько указателей:
- Произошла критическая проблема с $ _POST ["submit"], такого ввода в форме нет ... это означает, что он не является допустимым триггером
- Ваш
<textarea>
не был закрыт и вызывал проблемы.
- Я использую xhtml в моем примере, поэтому
<input>
необходимо завершить с /
- В
<input>
для PHP вам не нужно иметь id="txtSubject"
(идентификаторы полезны при работе с JS)
- Нет смысла иметь
name=""
в <form>
- В вашем PHP-коде были странные пробелы. Пример:
$_FILES["fileAttach"] ["tmp_name"]
. Это не очень правильный код!
- Добавление
. ""
в конце строки очень бессмысленно
Полный автономный код:
<?php
if (isset($_POST["submit_trigger"])) {
$strTo = $_POST["txtTo"];
$strSubject = $_POST["txtSubject"];
$strMessage = nl2br($_POST["txtDescription"]);
//*** Uniqid Session ***//
$strSid = md5(uniqid(time()));
$strHeader = "";
$strHeader .= "From: " . $_POST["txtFormName"] . "<" . $_POST["txtFormEmail"] . ">\nReply-To: " . $_POST["txtFormEmail"];
$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";
}
// @ = No Show Error //
$flgSend = @mail($strTo, $strSubject, null, $strHeader);
if ($flgSend) {
$posting_message = '<div class="success_message">Mail send completed :)</div>';
} else {
$posting_message = '<div class="error_message">Cannot send mail :(</div>';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Can you tell me what is the problem with this script - Kalle H. Väravas</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
html, body {margin: 0px; padding: 0px; background: #B3D9FF;}
label {font-weight: bold; width: 140px; display: inline-block; padding: 10px;}
.success_message,
.error_message {display: inline-block; padding: 2px 5px; font-weight: bold; margin-bottom: 5px;}
.success_message {background: #A9F5AB;}
.error_message {background: #FF8080;}
#main_container {width: 500px; -moz-border-radius: 5px; background: #FFFFFF; margin: 20px auto; padding: 20px;}
</style>
</head>
<body>
<div id="main_container">
<?php echo $posting_message; ?>
<form action="" method="post" enctype="multipart/form-data">
<input name="submit_trigger" value="1" type="hidden" />
<label>To:</label><input name="txtTo" type="text" /><br />
<label>Subject:</label><input name="txtSubject" type="text" /><br />
<label>Message:</label><textarea name="txtDescription" cols="30" rows="4"></textarea><br />
<label>From name:</label><input name="txtFormName" type="text" /><br />
<label>From email</label><input name="txtFormEmail" type="text" /><br />
<label>Attachment:</label><input name="fileAttach" type="file" /><br />
<input type="submit" name="Submit" value="Send" /><br />
</form>
</div>
</body>
</html>