我目前正在开发一个网页,该网站托管在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();
}
}
您的脚本没有错。您的本地邮件服务器有问题,它将出现在其错误日志中。由于您使用的是GoDaddy,因此这是一台共享服务器,您无法控制邮件服务器。建议您与GoDaddy支持人员联系,或使用更好的托管服务提供商。
一个不相关的问题:您的文件上传处理不安全。请遵循the file upload example provided with PHPMailer了解如何安全地处理上传,特别是,您应该使用is_uploaded_file
或move_uploaded file
,而不是直接信任$_FILES
中的内容。