我想开发在线申请功能。我已经编写了以下代码来上传简历,但如果用户点击“申请”,他将希望将上传的简历作为电子邮件附件发送。我使用phpmailer并成功发送电子邮件,但它没有附加文件。
以下是我上传文件的代码:
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$connect=mysql_connect("localhost","root","") or die("Couldnt connect");
mysql_select_db("dbname") or die("Couldnt DB");
$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed');
echo "<br>File $fileName uploaded<br>";
$uploads_dir = 'uploads/';
move_uploaded_file($tmpName, "$uploads_dir/$fileName");
}
这是PHPmailer代码:
$mail->AddAttachment("uploads"."/".$fileName);
我创建了“uploads”文件夹,我在其中收到所有上传的文件。但我没有将文件作为电子邮件附件上传。
答案 0 :(得分:0)
你的PHP版本是什么?我在class.phpmailer.php类中找到了一些东西。 搜索此函数:私有函数EncodeFile($ path,$ encoding ='base64')
这是:
private function EncodeFile($path, $encoding = 'base64') {
try {
if (!is_readable($path)) {
throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
}
if (function_exists('get_magic_quotes')) {
function get_magic_quotes() {
return false;
}
}
if (PHP_VERSION < 6) {
$magic_quotes = get_magic_quotes_runtime();
set_magic_quotes_runtime(0);
}
$file_buffer = file_get_contents($path);
$file_buffer = $this->EncodeString($file_buffer, $encoding);
if (PHP_VERSION < 6) { set_magic_quotes_runtime($magic_quotes); }
return $file_buffer;
} catch (Exception $e) {
$this->SetError($e->getMessage());
return '';
}
}
正如您所看到的,此函数正在检查您的PHP_VERSION。如果它低于6(PhpVersion 6将是DELETED magic_codes函数!!!)并尝试使用一些magic_quotes函数,那么在Php5或更高版本中已弃用。
所以...你可以解决这个问题,用* function_exists *来完成PhpMailer源代码 检查* magic_quotes *功能是否可用或使用简单来评论代码...
答案 1 :(得分:0)
尝试这个答案,似乎附着身体有问题,我想这会以某种方式破坏附件 Add attachment through PHPMailer