PHPMailer在与GoDaddy发送附件时遇到问题

问题描述 投票:1回答:1

我目前正在开发一个网页,该网站托管在GoDaddy上,并具有联系表。有时我发送的电子邮件附件大小超过1 mb(有时甚至更小),但出现此错误:

以下发件人地址失败:[email protected]:在未连接的情况下被称为MAIL FROM,SMTP服务器错误:在未连接的情况下被称为MAIL FROM。

[我发现此错误是间歇性的,在编写此错误时,我尝试重新创建它,但没有发生。

感谢您的建议。

这是我当前的代码:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require '../PHPMailer-master/src/Exception.php';
require '../PHPMailer-master/src/PHPMailer.php';
require '../PHPMailer-master/src/SMTP.php';

if ('POST' === $_SERVER['REQUEST_METHOD']){
    $mail = new PHPMailer(TRUE);

    try{
        $mail->isSMTP();
        $mail->Host = 'localhost';
        $mail->SMTPAuth = false;
        $mail->SMTPAutoTLS = false; 
        $mail->Port = 25;

        $mail->setFrom('[email protected]', 'Web Page');
        $mail->addAddress('[email protected]', 'Contact');
        $mail->Subject = 'Web Message';
        $mail->Body = 'Name: '.$_POST['name'].PHP_EOL.
                      'Email: '.$_POST['email'].PHP_EOL.
                      'Phone: '.$_POST['phone'].PHP_EOL.
                      'Message: '.$_POST['message'];

        /* Set Attachment*/
        if( isset($_FILES["file"])){
            $file_tmp  = $_FILES["file"]["tmp_name"];
            $file_name = $_FILES["file"]["name"];
            $mail->AddAttachment($file_tmp, $file_name);
        }

        if($mail->send()){
            echo '1';
        }else{
            echo '0';
        }

    } catch (Exception $e){
        echo 'Error:';
        echo $e->errorMessage();

} catch (\Exception $e){
    echo 'Error:';
    echo $e->getMessage();
}
}
php phpmailer
1个回答
0
投票

您的脚本没有错。您的本地邮件服务器有问题,它将出现在其错误日志中。由于您使用的是GoDaddy,因此这是一台共享服务器,您无法控制邮件服务器。建议您与GoDaddy支持人员联系,或使用更好的托管服务提供商。

一个不相关的问题:您的文件上传处理不安全。请遵循the file upload example provided with PHPMailer了解如何安全地处理上传,特别是,您应该使用is_uploaded_filemove_uploaded file,而不是直接信任$_FILES中的内容。

© www.soinside.com 2019 - 2024. All rights reserved.