提交表格后我收到邮件,但是它会显示白色黑屏,并显示留言信息。
我尝试在提交表单后重新加载页面,但收到错误。
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$to = "name@gmail.com";
$subject = "E-mail with attachment";
$from = stripslashes($_POST['fromname']) . "<" . stripslashes($_POST['fromemail']) . ">" . "<" . stripslashes($_POST['designation']) . ">";
// generate a random string to be used as the boundary marker
$mime_boundary = "==Multipart_Boundary_x" . md5(mt_rand()) . "x";
// now we'll build the message headers
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "Canditade Resume";
// when we use it
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
// iterating each File type
print_r($_FILES);
foreach ($_FILES as $userfile) {
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name)) {
if (is_uploaded_file($tmp_name)) {
$file = fopen($tmp_name, 'rb');
$data = fread($file, filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$tmp_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
// here's our closing mime boundary that indicates the last of the message
$message.="--{$mime_boundary}--\n";
// now we just send the message
if (@mail($to, $subject, $message, $headers))
echo "Message Sent";
else
echo "Failed to send";
} else {
?>
<form action="index.php" method="post" enctype="multipart/form-data" name="form1">
<label>Name</label>
<input type="text" name="fromname" class="input-block-level" style="width: 100%" required placeholder="Your First Name">
<label>Email Address</label>
<input type="text" style="width: 100%" class="input-block-level" required placeholder="Your email address" name="fromemail">
<label>Designation</label>
<input type="text" style="width: 100%" class="input-block-level" name="designation" required placeholder="Designation">
<label>Upload Your CV</label>
<input type="file" class="input-block-level" required placeholder="Upload Your CV" name="file1">
</div>
<input type="submit" name="Submit" value="Submit" class="btn btn-primary btn-large pull-left" onclick="javascript: form.action='index.php';">
</form>
<?php } ?>
请帮帮我
答案 0 :(得分:0)
在header location
中提供要重定向的网页名称。
更改
if (@mail($to, $subject, $message, $headers))
echo "Message Sent";
else
echo "Failed to send";
} else {
要
if (@mail($to, $subject, $message, $headers))
header("location:yourpage.php?message=Message Sent");
else
header("location:yourpage.php?message=Failed to send");
} else {
<强> yourpage.php 强>
<?php
if(isset($_GET['message'])){
echo $_GET['message'];
}
.
.
?>
答案 1 :(得分:0)
if (@mail($to, $subject, $message, $headers))
//echo "Message Sent";
header('location:email-success.php');
else
//echo "Failed to send";
header('location:email-error.php');
}
答案 2 :(得分:0)
你的编码有点混乱。这是我做的调整:
我还注释掉了print_r($ _ FILES),因为这将显示当用户按下提交时您不希望显示的内容的数组。
所以我重命名了$ _POST并将其设为isset:
<?php
if (isset($_POST['send'])) {
$to = "name@gmail.com";
$subject = "E-mail with attachment";
$from = stripslashes($_POST['fromname']) . "<" . stripslashes($_POST['fromemail']) . ">" . "<" . stripslashes($_POST['designation']) . ">";
// generate a random string to be used as the boundary marker
$mime_boundary = "==Multipart_Boundary_x" . md5(mt_rand()) . "x";
// now we'll build the message headers
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "Canditade Resume";
// when we use it
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
// iterating each File type
//print_r($_FILES);
foreach ($_FILES as $userfile) {
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name)) {
if (is_uploaded_file($tmp_name)) {
$file = fopen($tmp_name, 'rb');
$data = fread($file, filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$tmp_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
// here's our closing mime boundary that indicates the last of the message
$message .= "--{$mime_boundary}--\n";
// now we just send the message
if (@mail($to, $subject, $message, $headers)) {
echo "Message Sent";
} else {
echo "Failed to send";
}
}
?>
不确定为什么要将PHP包装在html端,但这就是为什么你没有被带回到表单端而只是一个空白页。
<form action="" method="post" enctype="multipart/form-data" name="form1">
<label>Name</label>
<input type="text" name="fromname" class="input-block-level" style="width: 100%" required placeholder="Your First Name">
<label>Email Address</label>
<input type="text" style="width: 100%" class="input-block-level" required placeholder="Your email address" name="fromemail">
<label>Designation</label>
<input type="text" style="width: 100%" class="input-block-level" name="designation" required placeholder="Designation">
<label>Upload Your CV</label>
<input type="file" class="input-block-level" required placeholder="Upload Your CV" name="file1">
</div>
<input type="submit" name="send" value="Submit" class="btn btn-primary btn-large pull-left" onclick="javascript: form.action='index.php';">
</form>
我已经测试了这段代码,然后重定向回到表单上方的“已发送消息”(正如您在任何联系表单上看到的那样)。