从表单发送文件附件使用phpMailer和PHP
我有一个example.com/contact-us.php上的表单,看起来像这样(简化): 
 <form method="post" action="process.php" enctype="multipart/form-data"> <input type="file" name="uploaded_file" id="uploaded_file" /> <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> </form> 
 在我的process.php文件中,我有下面的代码利用PHPMailer()发送一封电子邮件: 
 require("phpmailer.php"); $mail = new PHPMailer(); $mail->From = me@example.com; $mail->FromName = My name; $mail->AddAddress(me@example.com,"John Doe"); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = "Contact Form Submitted"; $mail->Body = "This is the body of the message."; 
电子邮件正确发送正文,但没有upload_file的附件。
我的问题
 我需要将表单中的文件uploaded_file附加到电子邮件中,然后发送。 在process.php脚本在电子邮件中发送它之后,我不关心保存文件。 
 我明白,我需要添加AddAttachment(); 某处(我正在假设在Body线下)附件发送。 但… 
-  我在process.php文件的顶部放入什么文件uploaded_file? 就像使用$_FILES['uploaded_file']从contact-us.php页面拉取文件一样?
-   AddAttachment();里面有什么? 要将该文件连同电子邮件一起发送,这些代码需要去哪里?
请帮助并提供代码!谢谢!
尝试:
 if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'], $_FILES['uploaded_file']['name']); } 
基本的例子也可以在这里find。
  AddAttachment的函数定义是: 
 public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') 
文件无法从客户端PC上载(上传)
在HTML表单中,我没有添加下面的行,所以没有附件:
ENCTYPE =“多部分/格式数据”
在forms上添加上面的行(如下)后,附件变得完美了。
 <form id="form1" name="form1" method="post" action="form_phpm_mailer.php" enctype="multipart/form-data"> 
 您将使用$_FILES['uploaded_file']['tmp_name'] ,这是PHP存储上传文件的path(这是一个临时文件,在脚本结束时由PHP自动删除,除非您移动/复制别处)。 
假设您的客户端表单和服务器端上传设置是正确的,那么您就不需要做任何事情来“上传”上传。 它会神奇地在tmp_namepath中可用。
请注意,你将不得不validation上传实际上是成功的,例如
 if ($_FILES['uploaded_file']['error'] === UPLOAD_ERR_OK) { ... attach file to email ... } 
否则,您可能会尝试使用损坏/部分/不存在的文件进行附件。
此代码帮助我在附件发送….
 $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']); 
用上面的代码replace您的AddAttachment(…)代码