我是Web设计的新手。我需要用HTML创建一个表单,这样它就要求用户输入几个字段并上传他/她的简历。当他提交表格时,他提交的材料应该是电子邮件给我,并附上他的简历作为电子邮件的附件。我用PHP发送电子邮件。一切都很好,只是文件没有与发送的电子邮件附在一起。
我正在发布HTML和PHP代码,请帮助我。
HTML代码:FileName:Carers.HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Contact Form</title>
</head>
<body>
<form action="Careers.php" method="post" enctype="multipart/form-data">
Name<br>
<input type="text" name="cf_name"><br>
E-mail<br>
<input type="text" name="cf_email"><br>
Date of Birth<br>
<input type="text" name="db_name"><br>
Contact Number<br>
<input type="text" name="db_cntct"><br>
Class 12 Marks/CGPA/Percentage<br>
<input type="text" name="cf_board"><br>
Graduation Marks/CGPA/Percentage<br>
<input type="text" name="db_grad"><br>
Post-Graduation Marks/CGPA/Percentage<br>
<input type="text" name="cf_pgrad"><br>
Present Employer<br>
<input type="text" name="db_emplyr"><br>
Date of Joining<br>
<input type="text" name="cf_doj"><br>
Designation<br>
<input type="text" name="db_desg"><br>
Current CTC<br>
<input type="text" name="db_ctc"><br>
Upload your Resume<br>
<input type="file" name="attachment" size="40"><br>
Message<br>
<textarea name="cf_message"></textarea><br><br>
<input type="submit" value="Send">
<input type="reset" value="Clear">
</form>
</body>
</html>
PHP代码:FileName:Carers.PHP
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_dob = $_POST['db_name'];
$field_contact = $_POST['db_cntct'];
$field_board = $_POST['cf_board'];
$field_grad = $_POST['db_grad'];
$field_pgrad = $_POST['cf_pgrad'];
$field_emplyr = $_POST['db_emplyr'];
$field_doj = $_POST['cf_doj'];
$field_desg = $_POST['db_desg'];
$field_ctc = $_POST['db_ctc'];
$field_message = $_POST['cf_message'];
$mail_to = 'sachinrocksus@gmail.com';
$subject = 'Job Application from a site visitor '.$field_name;
$body_message = 'From: '.$field_name."n";
$body_message .= 'E-mail: '.$field_email."n";
$body_message .= 'Date of Birth: '.$field_dob."n";
$body_message .= 'Contact Number: '.$field_contact."n";
$body_message .= 'Class 12 Marks/CGPA/Percentage: '.$field_board."n";
$body_message .= 'Graduation Marks/CGPA/Percentage: '.$field_grad."n";
$body_message .= 'Post-Graduation Marks/CGPA/Percentage: '.$field_pgrad."n";
$body_message .= 'Present Employer: '.$field_emplyr."n";
$body_message .= 'Date of Joining: '.$field_doj."n";
$body_message .= 'Designation: '.$field_desg."n";
$body_message .= 'Current CTC: '.$field_ctc."n";
$body_message .= 'Message: '.$field_message."n";
$headers = 'From: '.$field_email."rn";
$headers .= 'Reply-To: '.$field_email."rn";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Your Job Application has been recieved. We will contact you shortly.');
window.location = 'Careers.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Message failed');
window.location = 'Careers.html';
</script>
<?php
}
?>
您没有将任何内容作为附件传递
我在这里粘贴一个片段,希望这能帮助你
<?php
$fileatt = "mypdffile.pdf"; // Path to the file
$fileatt_type = "application/pdf"; // File Type
$fileatt_name = "mypdffile.pdf"; // Filename that will be used for the file as the attachment
$email_from = "sales@mysite.com"; // Who the email is from
$email_subject = "Your attached file"; // The Subject of the email
$email_message = "Thanks for visiting mysite.com! Here is your free file.
";
$email_message .= "Thanks for visiting.
"; // Message that the email has in it
$email_to = $_POST['email']; // Who the email is to
$headers = "From: ".$email_from;
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "nMIME-Version: 1.0n" .
"Content-Type: multipart/mixed;n" .
" boundary="{$mime_boundary}"";
$email_message .= "This is a multi-part message in MIME format.nn" .
"--{$mime_boundary}n" .
"Content-Type:text/html; charset="iso-8859-1"n" .
"Content-Transfer-Encoding: 7bitnn" .
$email_message .= "nn";
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}n" .
"Content-Type: {$fileatt_type};n" .
" name="{$fileatt_name}"n" .
//"Content-Disposition: attachment;n" .
//" filename="{$fileatt_name}"n" .
"Content-Transfer-Encoding: base64nn" .
$data .= "nn" .
"--{$mime_boundary}--n";
$ok = @mail($email_to, $email_subject, $email_message, $headers);
if($ok) {
echo "You file has been sent
to the email address you specified.
Make sure to check your junk mail!
Click here to return to mysite.com.";
} else {
die("Sorry but the email could not be sent. Please go back and try again!");
}
?>
此函数将上传文件作为附件发送。有关html代码和分步说明,请参阅教程。
http://www.pearlbells.co.uk/send-upload-file-email-attachment-php/
function pepareAttachment( $filename ,$fileorgname) {
$attachContent = '';
$file = fopen($filename,"rb");
$data = fread($file,filesize($filename));
fclose($file);
$cvData = chunk_split(base64_encode($data));
$attachContent .= "Content-Type: {"application/octet-stream"};n" . " name="$fileorgname"n" .
"Content-Disposition: attachment;n" . " filename="$fileorgname"n" .
"Content-Transfer-Encoding: base64nn" . $cvData . "nn";
$attachContent .= "--{$mime_boundary}n";
return $attachContent;
}
function sendMailAsAttachment( $filename, $fileorgname, $formData ) {
$emailData = prepareEmail( $formData );
$attachContent = prepareAttachment( $filename,$fileorgname );
$message = $emailData['message'].$attachContent;
$ok = @mail($emailData['to'], $emailData['subject'], $message, $emailData['headers']);
if ($ok) {
echo "<p>mail sent to $to!</p>";
} else {
echo "<p>mail could not be sent!</p>";
}
}
感谢您分享这样一段好代码:只需稍作修改,这就是真正的工作代码。制作一个HTML文件:
上传文件并作为电子邮件附件发送
姓名:电子邮件:
选择要上载的文件:
同一文件夹生成一个名为mail_sender.php 的php文件
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$name_of_uploaded_file =basename($_FILES['uploaded_file']['name']);
$formData = $_POST;
getFile( $name_of_uploaded_file, $formData );
function getFile( $filename , $formData ) {
$allowedExts = array("csv","pdf","jpg","png","JPG","PNG","jpeg","JPEG");
$temp = explode(".", $_FILES["uploaded_file"]["name"]);
$extension = end($temp);
$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv','application/jpg','image/jpg', 'image/jpeg', 'image/png','image/gif');
if (in_array($_FILES['uploaded_file']['type'],$mimes )
&& ($_FILES["uploaded_file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["uploaded_file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["uploaded_file"]["error"] . "<br>";
}
else
{
sendMailAsAttachment($_FILES["uploaded_file"]["tmp_name"],$_FILES["uploaded_file"]["name"],$formData);
}
}
else
{
echo "Invalid file " . $extension . " {} " . $_FILES['uploaded_file']['type'];
//echo in_array($_FILES['uploaded_file']['type'],$mimes );
}
}
//This function accepts post data on form submissions and prepare the email message from the form data.
function prepareEmail( $formData ) {
// email fields: to, from, subject, and so on
$to = "solimankhulna@gmail.com";
$from = "solimankhulna@solimankhulna.com";
$subject ="";
$message = "Uploaded Filen";
$message .= "Name :". $formData['name']."n";
$message .= "Email Address :". $formData['email']."n";
$headers = "From: $from";
// boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// headers for attachment
$headers .= "nMIME-Version: 1.0n" . "Content-Type: multipart/mixed;n" . " boundary="{$mime_boundary}"";
// multipart boundary
$message .= "This is a multi-part message in MIME format.nn" . "--{$mime_boundary}n" . "Content-Type: text/plain; charset="iso-8859-1"n" . "Content-Transfer-Encoding: 7bitnn" . $message . "nn";
$message .= "--{$mime_boundary}n";
$emailData = array (
'to' => $to,
'from' => $from,
'subject' => $subject,
'headers' => $headers,
'message' => $message
);
return $emailData;
}
function prepareAttachment( $filename ,$fileorgname) {
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$attachContent = '';
$file = fopen($filename,"rb");
$data = fread($file,filesize($filename));
fclose($file);
$cvData = chunk_split(base64_encode($data));
$attachContent .= "Content-Type: {"application/octet-stream"};n" . " name="$fileorgname"n" .
"Content-Disposition: attachment;n" . " filename="$fileorgname"n" .
"Content-Transfer-Encoding: base64nn" . $cvData . "nn";
$attachContent .= "--{$mime_boundary}n";
return $attachContent;
}
function sendMailAsAttachment( $filename, $fileorgname, $formData ) {
$emailData = prepareEmail( $formData );
$attachContent = prepareAttachment( $filename,$fileorgname );
$message = $emailData['message'].$attachContent;
$ok = @mail($emailData['to'], $emailData['subject'], $message, $emailData['headers']);
if ($ok) {
echo "<p>mail sent to " . $emailData['to'] . "!</p>";
} else {
echo "<p>mail could not be sent!</p>";
}
}
?>
如上所述,您的PHP
部分中没有处理任何附件。本教程可能会帮助您逐一完成这些步骤。