附加文件在电子邮件phpmailer中

时间:2011-05-06 19:46:11

标签: php attachment phpmailer

我想开发在线申请功能。我已经编写了以下代码来上传简历,但如果用户点击“申请”,他将希望将上传的简历作为电子邮件附件发送。我使用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”文件夹,我在其中收到所有上传的文件。但我没有将文件作为电子邮件附件上传。

2 个答案:

答案 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