PHP 邮件附件打不开或文件错误
PHP Mail attachment not opening or error file
这段代码似乎可以正常工作,但是当我打开邮件中的附件时,它无法打开或出错。除了附件,一切都很好。有人可以帮忙吗?谢谢
<?php
if (isset($_POST["send"])) {
$subject = "Applicant";
$name = $_POST['contact_name'];
$position = $_POST['position'];
$tmpName = $_FILES['attachment']['tmp_name'];
$fileType = $_FILES['attachment']['type'];
$fileName = $_FILES['attachment']['name'];
# Open a file
$file = fopen($tmpName, "r" );
if( $file == false )
{
echo "Error in opening file";
exit();
}
# Read the file into a variable
$size = $_FILES['attachment']['size'];
$content = fread( $file, $size);
# encode the data for safe transit
# and insert \r\n after every 76 chars.
$encoded_content = chunk_split(base64_encode($content));
# Get a random 32 bit number using time() as seed.
$num = md5( time() );
# Define the main headers.
$header = "From: Applicant\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; ";
$header .= "boundary=$num\r\n";
$header .= "--$num\r\n";
# Define the position section
$header .= "Content-Type: text/plain\r\n";
$header .= "Content-Transfer-Encoding:8bit\r\n\n";
$header .= "$name\r\n";
$header .= "$position\r\n";
$header .= "--$num\r\n";
# Define the attachment section
$header .= "Content-Type: multipart/mixed; ";
$header .= "name=\"$fileName\"\r\n";
$header .= "Content-Transfer-Encoding:base64\r\n";
$header .= "Content-Disposition:attachment; ";
$header .= "filename=\"$fileName\"\r\n\n";
$header .= "$encoded_content\r\n";
$header .= "--$num--";
$message = "Name: ".$name."\r\n"."Position: ".$position;
# Send email now
$retval = mail ('sample@gmail.com', $subject, $message, $header);
if( $retval == true ){
echo "<div style='border-style: solid; border: thick double #00386c; margin-bottom: 10px;'><h1 style='text-align: center; color: #00386c; padding: 10px;'>Your resume was sent! Thank you.</h1></div>";
}else{
echo "error";exit;
}
}
?>
您缺少电子邮件正文中的附件部分。
试试这个:
if (isset($_POST["send"])) {
$subject = "Applicant";
$name = $_POST['contact_name'];
$position = $_POST['position'];
$tmpName = $_FILES['attachment']['tmp_name'];
$fileType = $_FILES['attachment']['type'];
$fileName = $_FILES['attachment']['name'];
$message = "Name: ".$name."\r\n"."Position: ".$position;
# Open a file
# encode the data for safe transit
# and insert \r\n after every 76 chars.
$encoded_content = chunk_split(base64_encode(file_get_contents($tmpName)));
# Get a random 32 bit number using time() as seed.
$random_hash = md5(date('r', time()));
# Define the main headers.
$headers = "From: no-reply@example.com\r\n";
$headers .= "Reply-To: no-reply@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
# Plain text section
$body = "--PHP-mixed-" . $random_hash . "\r\n";
$body .= "Content-Type: text/plain; charset=\"UTF-8\"\r\n";
$body .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$body .= $message;
$body .= "\r\n\r\n";
$body .= "\r\n--PHP-mixed-" . $random_hash . "\r\n\r\n";
# Define the attachment section
$body .= "--PHP-mixed-" . $random_hash . "\r\n";
$body .= "Content-Type: " . $fileType . "; name=\"" . $fileName . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"" . $fileName . "\"\r\n\r\n";
$body .= $encoded_content;
$body .= "\r\n--PHP-mixed-" . $random_hash . "\r\n\r\n";
# Send email now
$retval = mail('sample@gmail.com', $subject, $body, $headers);
if( $retval == true ) {
echo "<div style='border-style: solid; border: thick double #00386c; margin-bottom: 10px;'><h1 style='text-align: center; color: #00386c; padding: 10px;'>Your resume was sent! Thank you.</h1></div>";
} else{
echo "error";exit;
}
}
这段代码似乎可以正常工作,但是当我打开邮件中的附件时,它无法打开或出错。除了附件,一切都很好。有人可以帮忙吗?谢谢
<?php
if (isset($_POST["send"])) {
$subject = "Applicant";
$name = $_POST['contact_name'];
$position = $_POST['position'];
$tmpName = $_FILES['attachment']['tmp_name'];
$fileType = $_FILES['attachment']['type'];
$fileName = $_FILES['attachment']['name'];
# Open a file
$file = fopen($tmpName, "r" );
if( $file == false )
{
echo "Error in opening file";
exit();
}
# Read the file into a variable
$size = $_FILES['attachment']['size'];
$content = fread( $file, $size);
# encode the data for safe transit
# and insert \r\n after every 76 chars.
$encoded_content = chunk_split(base64_encode($content));
# Get a random 32 bit number using time() as seed.
$num = md5( time() );
# Define the main headers.
$header = "From: Applicant\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; ";
$header .= "boundary=$num\r\n";
$header .= "--$num\r\n";
# Define the position section
$header .= "Content-Type: text/plain\r\n";
$header .= "Content-Transfer-Encoding:8bit\r\n\n";
$header .= "$name\r\n";
$header .= "$position\r\n";
$header .= "--$num\r\n";
# Define the attachment section
$header .= "Content-Type: multipart/mixed; ";
$header .= "name=\"$fileName\"\r\n";
$header .= "Content-Transfer-Encoding:base64\r\n";
$header .= "Content-Disposition:attachment; ";
$header .= "filename=\"$fileName\"\r\n\n";
$header .= "$encoded_content\r\n";
$header .= "--$num--";
$message = "Name: ".$name."\r\n"."Position: ".$position;
# Send email now
$retval = mail ('sample@gmail.com', $subject, $message, $header);
if( $retval == true ){
echo "<div style='border-style: solid; border: thick double #00386c; margin-bottom: 10px;'><h1 style='text-align: center; color: #00386c; padding: 10px;'>Your resume was sent! Thank you.</h1></div>";
}else{
echo "error";exit;
}
}
?>
您缺少电子邮件正文中的附件部分。 试试这个:
if (isset($_POST["send"])) {
$subject = "Applicant";
$name = $_POST['contact_name'];
$position = $_POST['position'];
$tmpName = $_FILES['attachment']['tmp_name'];
$fileType = $_FILES['attachment']['type'];
$fileName = $_FILES['attachment']['name'];
$message = "Name: ".$name."\r\n"."Position: ".$position;
# Open a file
# encode the data for safe transit
# and insert \r\n after every 76 chars.
$encoded_content = chunk_split(base64_encode(file_get_contents($tmpName)));
# Get a random 32 bit number using time() as seed.
$random_hash = md5(date('r', time()));
# Define the main headers.
$headers = "From: no-reply@example.com\r\n";
$headers .= "Reply-To: no-reply@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
# Plain text section
$body = "--PHP-mixed-" . $random_hash . "\r\n";
$body .= "Content-Type: text/plain; charset=\"UTF-8\"\r\n";
$body .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$body .= $message;
$body .= "\r\n\r\n";
$body .= "\r\n--PHP-mixed-" . $random_hash . "\r\n\r\n";
# Define the attachment section
$body .= "--PHP-mixed-" . $random_hash . "\r\n";
$body .= "Content-Type: " . $fileType . "; name=\"" . $fileName . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"" . $fileName . "\"\r\n\r\n";
$body .= $encoded_content;
$body .= "\r\n--PHP-mixed-" . $random_hash . "\r\n\r\n";
# Send email now
$retval = mail('sample@gmail.com', $subject, $body, $headers);
if( $retval == true ) {
echo "<div style='border-style: solid; border: thick double #00386c; margin-bottom: 10px;'><h1 style='text-align: center; color: #00386c; padding: 10px;'>Your resume was sent! Thank you.</h1></div>";
} else{
echo "error";exit;
}
}