无法使用phpMailer访问文件

时间:2018-10-16 12:11:23

标签: php

我正在使用phpmailer发送邮件。 接收邮件很好,但是附件没有附件。

当我调试它时。它给了我错误。

“无法访问文件:upload_images / images.jpg”

我有一个文件夹upload_images,其中有一个图像名称图像。

这是我的代码...

if (isset($_POST['btnsubmit'])) {
    require "phpmailer/PHPMailerAutoload.php";
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = "mail.domain.com";
    $mail->port = 465;
    $mail->SMTPAuth=true;
    $mail->SMTPDebug = 4;
    $mail->SMTPSecure = 'tls';
    $mail->Username = "info@example.com";
    $mail->Password = '******';
    $file_name = $_FILES["attc"]["name"];
    $tmp_name = $_FILES["attc"]["tmp_name"];
    $path = '/upload_images/';
    //move_uploaded_file($tmp_name, $path.$file_name);
    $mail->setFrom('abc@gmail.com','From_name');
    $mail->addAddress('xyz@gmail.com','To_name');
    $mail->addReplyTo('abc@gmail.com','From_name');
    $mail->isHTML(true);
    $mail->AddAttachment("upload_images/images.jpg","images.jpg");
    $mail->Subject = "Testing well";
    $mail->Body = 'This is Body Part';
    if ($mail->send()) {
        echo "<script>alert('Email Sent Success!')</script>";
    }
    else{
        echo "<script>alert('".$mail->ErrorInfo."')</script>";
    }
}

3 个答案:

答案 0 :(得分:0)

您应该使用绝对路径。例如,如果upload_images在文档根目录内,则可以使用:

$mail->AddAttachment($_SERVER['DOCUMENT_ROOT']."/upload_images/images.jpg","images.jpg");

答案 1 :(得分:0)

使用绝对路径。

if (isset($_POST['btnsubmit'])) {
require "phpmailer/PHPMailerAutoload.php";
$my_path ="upload_images/images.jpg";
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = "mail.domain.com";
$mail->port = 465;
$mail->SMTPAuth=true;
$mail->SMTPDebug = 4;
$mail->SMTPSecure = 'tls';
$mail->Username = "info@example.com";
$mail->Password = '******';
$file_name = $_FILES["attc"]["name"];
$tmp_name = $_FILES["attc"]["tmp_name"];
$path = '/upload_images/';
//move_uploaded_file($tmp_name, $path.$file_name);
$mail->setFrom('abc@gmail.com','From_name');
$mail->addAddress('xyz@gmail.com','To_name');
$mail->addReplyTo('abc@gmail.com','From_name');
$mail->isHTML(true);
$mail->AddAttachment($my_path);
$mail->Subject = "Testing well";
$mail->Body = 'This is Body Part';
if ($mail->send()) {
    echo "<script>alert('Email Sent Success!')</script>";
}
else{
    echo "<script>alert('".$mail->ErrorInfo."')</script>";
}

}

答案 2 :(得分:-1)

对变量$ my_path中的文件使用以下内容和路径   

if (isset($_POST['btnsubmit'])) {

    //use the path
    $my_path = "/upload_images/images.jpg";

    require "phpmailer/PHPMailerAutoload.php";
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = "mail.domain.com";
    $mail->port = 465;
    $mail->SMTPAuth=true;
    $mail->SMTPDebug = 4;
    $mail->SMTPSecure = 'tls';
    $mail->Username = "info@example.com";
    $mail->Password = '******';
    $file_name = $_FILES["attc"]["name"];
    $tmp_name = $_FILES["attc"]["tmp_name"];
    $path = '/upload_images/';
    //move_uploaded_file($tmp_name, $path.$file_name);
    $mail->setFrom('abc@gmail.com','From_name');
    $mail->addAddress('xyz@gmail.com','To_name');
    $mail->addReplyTo('abc@gmail.com','From_name');
    $mail->isHTML(true);
    $mail->AddAttachment($my_path,'images.jpg');
    $mail->Subject = "Testing well";
    $mail->Body = 'This is Body Part';
    if ($mail->send()) {
        echo "<script>alert('Email Sent Success!')</script>";
    }
    else{
        echo "<script>alert('".$mail->ErrorInfo."')</script>";
    }
}