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

PHP-邮件附件无法打开[重复]

彭洲
2023-03-14

我目前的邮件有问题。它发送的很好,我收到了一个带有名称和大小的附件,但无法打开。另外,我已经尝试了PHPMailer,SMTP在我的服务器上不起作用,所以请不要建议我使用它:)

抱歉关于法语变量名称和错误消息,但我不认为这将是有用的。当然,如果你需要,我可以翻译。

这是一段处理我附件的代码。

    if(isset($_FILES["fichier"]) &&  $_FILES['fichier']['name'] != ""){
        $nom_fichier = $_FILES['fichier']['name'];
        $source = $_FILES['fichier']['tmp_name'];
        $type_fichier = $_FILES['fichier']['type'];
        $taille_fichier = $_FILES['fichier']['size'];

        if($nom_fichier != ".htaccess"){
             if($type_fichier == "image/jpeg" 
                || $type_fichier == "image/pjpeg" 
                || $type_fichier == "application/pdf"){

                if ($taille_fichier <= 2097152) {
                    $tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a");

                    echo("Nom du fichier : ".$nom_fichier."<br/>");
                    echo("Nom du fichier temporaire : ".$source."<br/>");
                    echo("Type du fichier : ".$type_fichier."<br/>");
                    echo("Taille du fichier : ".$taille_fichier."<br/>");

                    $handle = fopen($source, 'r');
                    $content = fread($handle, $taille_fichier);
                    $encoded_content = chunk_split(base64_encode($content));
                    $f = fclose($handle);

                    $email_message .= $passage_ligne . "--" . $boundary . $passage_ligne;
                    $email_message .= 'Content-type:'.$type_fichier.';name='.$nom_fichier."\n";
                    $email_message .= 'Content-transfer-encoding:base64'."\n";
                    $email_message .= $encoded_content."\n";
                    //$email_message .= $passage_ligne . "--" . $boundary . "--" . $passage_ligne;
                }else{
//Error message
                    $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 2Mo.". $passage_ligne;
                }
            }else{
//Error message
                $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $passage_ligne;
            }
        }else{
//Error message
            $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $passage_ligne;
        }
    }

共有1个答案

孟树
2023-03-14

在内容之前应该有两个换行符。邮件消息应如下所示:

Content-Type: multipart/alternative; boundary=foobar

--foobar
Content-Type: …
Content-Transfer-Encoding: …

base64data…
--foobar--

您缺少内容传输编码和数据之间的白线。

 类似资料:
  • 我一直在使用此脚本向某些员工发送电子邮件,但由于我的系统发生了更改,我现在必须随电子邮件发送附件,我尝试了多个代码来完成此任务,但都没有成功。。。我仍然收到电子邮件,但没有附件,这在这种情况下是毫无意义的,我已经把我正在使用的脚本放在下面 我已经删除了我使用的真实地址和smtp服务器 我也尝试了一些其他的emtods附加的文件,但似乎没有工作任何帮助是大大的

  • 所以,在过去的一个小时左右,我一直在研究这个邮件功能,但我不明白为什么它不发送电子邮件!我已经尝试过多次,修改代码并试图使其完美,但仍然没有收到测试电子邮件。。。 我的电子邮件中有HTML,但是,这不是问题所在,因为我已经在没有HTML的情况下对其进行了测试。 我的PHP: 请不要将此分类为重复,因为我已经测试了许多其他论坛关于此主题的问题,它们并没有解决我的问题!:( 谢谢 编辑:我在页面上的寄

  • 我试图发送附加文件到电子邮件。但是我无法将附件文件连同表格数据发送到电子邮件。我试过了 超文本标记语言: sendmail.php: 我尝试了相同的代码没有$strHeader在mail()邮件被发送,但当我添加$strHeader到mail()我无法发送代码。请指导我在哪里做错误,也请告诉我如何才能只允许jpg,jpeg,png格式上传。对我来说,编辑代码对我来说很容易学习。我在stackove

  • 显示的消息如下: 无法访问jarfile jarFileName.jar。 我试过:1。下载并运行无效。2.确保我有JDK和JRE(我有Java 7 update 79、8 update 5和8 update 71;Java SE Dev Kit 7 update 79和8 update 5) 现在如果我们能弄清楚为什么双击不能使文件运行...

  • 制作一个PHP脚本,该脚本也包含一个文本文件作为附件。当我发送到一个GMAIL地址时,它是完美的,但是当我发送到另一个网络主机的地址时,我可以看到文件是附加的,但是当我打开它时,文件是空的(没有内容)...什么会导致这种情况??这是我使用的代码:

  • 我有一个错误:PHP无法打开流:打开的文件太多。 我在这里查看了stackoverflow的各种答案,但我无法解决这个问题。我主要尝试增加最大打开文件数的限制: 我已编辑/等/安全/限制。conf,其中我指定了: 保存并注销/重新启动该框后,命令: 仍打印出1024个。我不知道为什么这没有效果,我想这就是我得到php错误的原因。如果需要,我可以粘贴整个文件或任何其他配置文件。我使用的是PHP 5.