为了账号安全,请及时绑定邮箱和手机立即绑定

邮件程序错误:在 phpmailer 函数中发送电子邮件

邮件程序错误:在 phpmailer 函数中发送电子邮件

PHP
慕运维8079593 2023-08-06 14:32:02
当我过去使用简单文本正文发送不带附件的电子邮件时,出现消息无法发送的错误。邮件程序错误:无法访问文件:./attachment/如果我评论我的附件功能,我的代码工作正常。$mail->send 函数每次都会尝试搜索附件文件夹。即使文件不存在于电子邮件中,即文件仅包含文本。<?php    include('db.php');use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;require_once "vendor/autoload.php";    $id = $_GET['id'];    $query = "select * from access where uid='$id'";$result = mysqli_query($conn,$query);$row = mysqli_fetch_assoc($result);    $mail = new PHPMailer(true);    try {        $mail->setFrom('sender@gmail.com');  $mail->addAddress('receiver@gmail.com');      $array = explode(", ",$row['attachments']);  $count = count($array);  if($count > 0 && $row['attachments'] != 'null'){    for ($i=0; $i < $count ; $i++) {      $file_to_attach = './attachment/' . $array[$i];      $mail->addAttachment($file_to_attach, $array[$i]);     }  }      $mail->isHTML(true);                                    $mail->Subject = $row['subject'];  $mail->Body    = $row['body'];      $mail->send();  echo 'Message has been sent';} catch (Exception $e) {  echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";}
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您在 PHPMailer 中启用了异常,并且使用addAttachments失败的参数进行调用(例如 null,或不存在的文件路径,或者您没有读取权限),因此它会抛出异常,如下所示预期的。因此,您需要做两件事:找出它无法读取文件的原因,并添加处理失败的代码,如下所示:


   if($count > 0 && $row['attachments'] != 'null'){

        for ($i=0; $i < $count ; $i++) {

                $file_to_attach = './attachment/' . $array[$i];

                try {

                    $mail->addAttachment($file_to_attach, $array[$i]);

                } catch (Exception $e) {

                    echo "Could not read file $file_to_attach)\n";

                }

        }

    }

该代码允许发送无论如何继续 - 这取决于您是否愿意这样做。


查看完整回答
反对 回复 2023-08-06
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞


    if($row['attachments']!=null) 

            {

                $array = explode(", ",$row['attachments']);

                $count = count($array);

                if($count > 0 && $row['attachments'] != 'null'){

                    for ($i=0; $i < $count ; $i++) {

                            $file_to_attach = './attachment/' . $array[$i];

                            $mail->addAttachment($file_to_attach, $array[$i]); 

                    }

                }

            }


查看完整回答
反对 回复 2023-08-06
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信