在php中发送带附件的电子邮件,而不将文件保存到webserver

时间:2012-08-03 15:12:36

标签: php email attachment

我正在创建一个简单的表单,让用户“上传”一个文件和一个评论框。 在用户选择文件(可以是图像或pdf)并单击提交后,我不会存储 将文件放入我的网络服务器,该文件将被插入电子邮件并发送给我。

我的问题是:如何在不将文件存储在任何地方的情况下附加文件。

我不想使用第三方模块。

更新

$attachment = $_FILES["OrderList"]["tmp_name"];
$content = file_get_contents($attachment);
$content = chunk_split(base64_encode($content));

我收到了一个错误:

  

第24行的C:\ dir \ orders \ upload.php中的文件名不能为空

第24行是$content = file_get_contents($attachment);

3 个答案:

答案 0 :(得分:4)

今天我遇到了类似的情况并找到了解决方案,所以这里是

if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {


$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$newname= $_FILES["file"]["tmp_name"].".".$extension;
rename($_FILES["file"]["tmp_name"],$newname);
$attachments = array( $newname );

   wp_mail('emailto send', 'title', 'message','',$attachments );
}

答案 1 :(得分:3)

当您接受来自PHP的文件上传时,您已经存储了它。

将其存储在tmp文件夹中时,只需使用它。

当脚本结束时,PHP会自动为您删除它。

答案 2 :(得分:0)

通过上传文件,它会以临时目录保存在您的服务器上。例外是PUT方法,在这种情况下,文件直接在php:// input上发送。之后,您可以使用您喜欢的任何PHP邮件库。

PHP manual for PUT'ing files