在 PHPMailer 中调用 AddAttachment 不会发送邮件

Posted

技术标签:

【中文标题】在 PHPMailer 中调用 AddAttachment 不会发送邮件【英文标题】:Calling AddAttachment in PHPMailer does not send mail 【发布时间】:2014-07-08 06:12:49 【问题描述】:

我正在我的 php Web 应用程序中实现邮件实用程序。它适用于简单的电子邮件。但是,如果尝试附加任何文件,则不会调用 PHPMailer 的发送函数,即不会发送邮件,也不会显示任何错误。以下是我的示例代码:

HTML 表单

<form action="Email.php" enctype="multipart/form-data" method="POST">
      <input type="text" name = "to" id="to">
      <br>
      <input type="file" name="file" id="file">
      <br>
      <input type="text" name="subject" id="subject" size="155"><br>
      <textarea rows="10" cols="50" name="msg" id="msg">
      </textarea>
      <br>
      <input type="submit" value="Send Mail">
</form>

PHP 代码

include 'library.php'; 
include "class.phpmailer.php";


$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl"; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465;  
$mail->Username = USERNAME;
$mail->Password = USERPASS;
$mail->SetFrom(USERNAME);
$mail->Subject =$_POST['subject'];

$mail->Msghtml($_POST['msg']);
$mail->IsHTML(true);
$mail->AddAddress($_POST['to']);
if (!empty($_FILES['file']['tmp_name'])) 

    move_uploaded_file($_FILES["file"]["tmp_name"],"Upload/" . $_FILES["file"]["name"]);
    if(!$mail->AddAttachment("Upload/" . $_FILES['file']['name']))
    
        echo "Error in attachments";
    
    else
    
        echo "File Attached";
    

$result = $mail->Send();
echo $result;
if(!$result) 
    echo 'Error sending email' . $mail->ErrorInfo;

else
    echo "Email Sent";

这段代码的输出如下:

File Attached

在此之后不会显示任何消息,并且邮件也不会从提供的 id 发送。但如果我不添加任何附件,它会正常工作。

【问题讨论】:

您是否检查过您的文件已上传到 Uploads 中? 让您检查错误日志。它会给你确切的原因。还要检查权限。 @RohitKumarChoudhary 我不知道如何检查错误日志,您能帮帮我吗? 如果你使用的是 LAMP,那么你可以在这里找到错误日志 /var/log/apache2/error.log 你也试试这个 if(is_uploaded_file($_FILES['uploaded_file']['tmp_name'])) $fileName = $_FILES['uploaded_file']['name']; $mail->AddAttachment($fileName); 【参考方案1】:

我已经解决了这个问题。解决方案是我试图添加 350KB 的文件,这需要更多时间并且抛出超过 30 秒的错误。我只是增加了我的时间限制,问题就解决了。谢谢大家的帮助。

【讨论】:

以上是关于在 PHPMailer 中调用 AddAttachment 不会发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHPMailer 调用 $mail->anyparameter 时超时

如何在 xampp 上使用 phpmailer 发送邮件

如何在xampp上使用phpmailer发送邮件

发送邮件

使用 DKIM 密钥在 phpmailer 中发送邮件

ThinkPHP中使用PHPMailer发送邮件