一尘不染

使用phpMailer和PHP从表单发送文件附件

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.";

电子邮件正确发送了正文,但没有附件uploaded_file

我的问题

我需要将uploaded_file表单中的文件附加到电子邮件中并发送出去。process.php脚本通过电子邮件发送文件后,我不在乎保存文件。

我知道我需要在AddAttachment();某处(我假设在此Body行下)添加附件以进行发送。但…

  1. 我要放在process.php文件顶部的什么位置才能拉入文件uploaded_file?像是$_FILES['uploaded_file']用来从contact-us.php页面提取文件的东西吗?
  2. AddAttachment();与电子邮件一起附加和发送的文件里面有什么内容,此代码需要放在哪里?

请帮助并提供代码!谢谢!


阅读 488

收藏
2020-05-26

共1个答案

一尘不染

尝试:

if (isset($_FILES['uploaded_file']) &&
    $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
    $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'],
                         $_FILES['uploaded_file']['name']);
}

基本示例也可以在找到。

函数定义为AddAttachment

public function AddAttachment($path,
                              $name = '',
                              $encoding = 'base64',
                              $type = 'application/octet-stream')
2020-05-26