Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有PHPMailer的文件附件_Php_Phpmailer - Fatal编程技术网

带有PHPMailer的文件附件

带有PHPMailer的文件附件,php,phpmailer,Php,Phpmailer,我有一个HTML表单,可以选择上载文件。 然后,我想将该文件作为电子邮件地址的附件与其他表单数据一起发送。 我正在使用PHP Mailer,我得到了要发送的表单数据:例如姓名、电话号码等 我无法将图像与它一起发送。到目前为止,我已经提供了代码 形式 联系我们 姓名*: 电话*: 电子邮件*: 消息: 发送此文件: 当你打电话时 move_uploaded_file($file_tmp,"uploads/".$file_name); 这将在uploads/目录中创建一个文件,文件名与

我有一个HTML表单,可以选择上载文件。
然后,我想将该文件作为电子邮件地址的附件与其他表单数据一起发送。
我正在使用PHP Mailer,我得到了要发送的表单数据:例如姓名、电话号码等

我无法将图像与它一起发送。到目前为止,我已经提供了代码


形式
联系我们
姓名*:

电话*:

电子邮件*:

消息:

发送此文件:
当你打电话时

move_uploaded_file($file_tmp,"uploads/".$file_name);
这将在
uploads/
目录中创建一个文件,文件名与上载者计算机上的名称相同

然后,您使用示例代码将附件添加到phpMailer,因此您基本上是在尝试附加不存在的文件

这两条线:

$mail->addAttachment('uploads/file.tar.gz');   // I took this from the phpmailer example on github but I'm not sure if I have it right.      
$mail->addAttachment('uploads/image.jpg', 'new.jpg');
应改为:

$mail->addAttachment("uploads/".$file_name);
另外请注意,如果您不想在上传并通过电子邮件发送附件后保存附件,则无需调用
move\u uploaded\u file
。如果是这种情况,只需调用
AddAttachment
,并使用
$\u FILES['image']['tmp\u name']
作为文件参数

另外,在HTML表单中,您有

<input id="file" name="file" type="file" />

只需在php mailer发送函数之前使用上述代码

谢谢您的评论!很好地发现了输入名称!它仍然没有将文件与电子邮件一起发送,但您是否可以确认
uploads/file
是在
file
是您上载的文件名的位置创建的?不,不需要,我不需要将文件保存到服务器,您是否可以展开更多内容:“如果是这样,只需调用addAttachment with$\u FILES['image']['tmp\u name']作为文件的论点,“谢谢!我只是编辑它来展示如何不用移动上传的文件。希望能有帮助。我终于成功了!谢谢你,德鲁!我把文件上传到服务器的代码搞错了。我用这个来帮助我解决这个问题,你的答案修复了我的HTML和PHPMailer脚本中的代码。你的代码基于一个过时的示例,因此请确保你使用的是PHPMailer的最新版本。我使用的是githubOk的最新版本,那么,为什么要将您的代码基于一个过时的示例呢?如果您能更清楚地了解什么是过时的,我将不胜感激?我已经查看了github上的所有最新示例,我的代码是相同的。如果你能帮忙的话,那就太好了。所有的PHPMailer方法都改为使用小写起始字符,并且
WordWrap
在一年多以前就从所有示例中删除了。自动加载器require和双引号参数周围的括号在很久以前也被删除了。你连接到gmail时没有使用加密——我不认为PHPMailer提供的gmail示例遗漏了这一点。这些东西并没有什么特别的错误,但当我看到像这样的小指标时,它表明代码要么是旧的,要么是从别处获得的,通常意味着使用的是旧版本。只需在php mailer send函数之前使用上面的代码
$file_tmp  = $_FILES['image']['tmp_name'];
$file_name = $_FILES['image']['name'];
//...
$mail->AddAttachment($file_tmp, $file_name);
$mail->addAttachment("uploads/".$file_name);