当前位置: 首页 > 知识库问答 >
问题:

在上载文件之前,是否使用phpmailer发送文件?

江高飞
2023-03-14

我有一个问题,通过phpmailer脚本发送带有附件的电子邮件。我有一个工作代码,如果我想添加一个单一的文件到邮件。但是当涉及到多个文件时,看起来它们甚至没有上传。

单个文件的我的代码:

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

            if(!$mail->Send())
          {
           header("Location: " . $returnErrorPage);
          }
          else
          {
             header("Location: " . $returnHomePage);
          }             

}

我尝试了一些代码,这些代码应该循环遍历$\u文件中的所有文件,但没有成功。然后我测试了以下代码:

$count = count($_FILES['file']['tmp_name']);
echo $count;

返回0。我知道$\u文件是空的,但我不知道原因。我需要缓冲文件或类似的东西吗?

编辑:这是我的html代码,它将文件和其他数据发送到脚本:

<form id="form_907007" class="appnitro" method="post" action="server/phpmailer.php"       
 enctype="multipart/form-data">
<p>Choose data (txt, html etc.):<br>
<input name="file" type="file" size="50" maxlength="100000" multiple>
</p>
</form>

共有1个答案

冀永寿
2023-03-14

我的问题的解决方案是基于Synchro的想法,先上传文件,然后发送电子邮件。

在我的html代码中,我必须更改这一行:

<input name="file" type="file" size="50" maxlength="100000" multiple>

<input name="file[]" type="file" size="50" maxlength="100000" multiple>

完成这一小步很重要,可以访问您稍后要在php中上载的每个文件。

第二步是遍历所有文件并将其存储在服务器上。我就是这样做的:

foreach ($_FILES["file"]["error"] as $key => $error){

if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["file"]["tmp_name"][$key];
    $name = $_FILES["file"]["name"][$key];

move_uploaded_file($tmp_name," server/data/$name"}

在接下来的步骤中,我检查文件是否上传成功,如果返回=TRUE,我将它们作为附件添加到邮件中:

if(move_uploaded_file($tmp_name,"server/data/$name" ))
            {
                $mail->AddAttachment("server/data/$name");
            }

如果一切顺利,我可以在发送邮件后删除文件:

if($mail->Send()){

    foreach ($_FILES["file"]["error"] as $key => $error)
    {
    $name = $_FILES["file"]["name"][$key];
    unlink("$name");
    }

header("Location: " . $returnPage);
exit;}

谢谢你的帮助!

 类似资料:
  • 问题内容: 我有一个看起来像这样的表格(简化): 在我的文件中,我使用以下代码来发送电子邮件: 电子邮件正确发送了正文,但没有附件。 我的问题 我需要将表单中的文件附加到电子邮件中并发送出去。脚本通过电子邮件发送文件后,我不在乎保存文件。 我知道我需要在某处(我假设在此行下)添加附件以进行发送。但… 我要放在文件顶部的什么位置才能拉入文件?像是用来从contact-us.php页面提取文件的东西吗

  • 我偶然发现了一些可以在Firefox中使用但不能在Chrome中使用的代码。 似乎正在发生的是,有一个文件上传文本字段的大小在CSS中。右边还有一个上传按钮,用户可以点击打开一个对话框来选择文件。textfield的长度是60,我想它是用来覆盖“上传”按钮的,而不是调整字段的大小。我在Firebug中减少了60到50,它停止了工作。 如何从上载按钮调用文件上载对话框?我想我需要向文本字段发送某种类

  • 本文向大家介绍PHPMailer发送邮件,包括了PHPMailer发送邮件的使用技巧和注意事项,需要的朋友参考一下 PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及图片附件,前提要设置好邮件服务器就能实现邮件发送功能。 HTML 首先我们先放置一个收件箱的输入框和一个发送邮件按钮: 收件人: 以上所述是小编给大家介绍的PHPMailer发送邮件,希望对大家有所

  • 问题内容: 在我的CRM在线系统中,我使用IMAP协议控制传入的邮件。现在,我正在使用phpmailer和SMTP协议发送邮件。一切都很好,但我有一件奇怪的事情。如何使用phpmailer脚本发送的邮件转到“已发送” IMAP文件夹? 问题答案: PHPMailer中现在有一个方法getSentMIMEMessage返回整个MIME字符串

  • 问题内容: 我正在尝试使小程序以非常频繁的时间间隔(每秒几次)读取本地文件系统(用户计算机)上的文件,然后通过javascript将文件的内容提供给网页。 小程序需要读取的文件由用户计算机上的程序进行高频更新。我担心的是,如果小程序在文件正在更新的过程中从文件中读取数据,可能会发生什么。 我不知道这有多大可能,但是如果确实有问题,有没有办法在读取文件之前确保当前未将其写入文件? 问题答案: 我对此

  • 问题内容: 我在这里找到了一些有关如何下载文件的示例,但其中大多数似乎都在使用HttpURLConnection。HttpClient可以下载文件吗? 问题答案: 使用httpclient非常简单。这是本教程的链接。 http://hc.apache.org/httpcomponents-client- ga/tutorial/html/fundamentals.html#d5e43