PHPMailer未发送附件

PHPMailer未发送附件,php,email,phpmailer,email-attachments,Php,Email,Phpmailer,Email Attachments,尝试使用PHPMailer发送附件时,正文已发送,但附件未发送。代码如下: $filename2 = "$key.txt"; $filename = "$key.zip"; $file_path = dirname(__FILE__); $myfile = fopen("$file_path/$filename2", "w") or die("Unable to open file!"); fwrite($myfile, $privkey); fwrite($myfile, $pubkey);

尝试使用PHPMailer发送附件时,正文已发送,但附件未发送。代码如下:

$filename2 = "$key.txt";
$filename = "$key.zip";
$file_path = dirname(__FILE__);
$myfile = fopen("$file_path/$filename2", "w") or die("Unable to open file!");
fwrite($myfile, $privkey);
fwrite($myfile, $pubkey);
fclose($myfile);
$zipFile = "$file_path/$filename";
$zipArchive = new ZipArchive();

if (!$zipArchive->open($zipFile, ZIPARCHIVE::OVERWRITE)){
    die("Failed to create archive\n");
}


$zipArchive->addGlob($filename2);
if (!$zipArchive->status == ZIPARCHIVE::ER_OK){
    echo "Failed to write local files to zip\n";
}

$zipArchive->close();

//Create Email to send to user with atachment
$message = "Test Email";
$subject = "Testing emails with attachment";

try
{
$email = new PHPMailer();
$email->setFrom('register@gasp.grn.cc', 'Gasp Bot');
$email->addReplyTo('no-reply@gasp.grn.cc', 'No-Reply');
$email->Subject   = $subject;
$email->Body      = $message;
$email->AddAddress($to,$username);
$email->AddAttachment($file_path, $filename);
$email->Send();
echo "Message has been sent";
}
catch(phpmailerException $e){
    echo $e->errorMessage();
}catch (Exception $e){
    echo $e->getMessage();
}
unlink ($zipFile);
unlink ("$file_path/$filename2");
我已经试过了

 $email->AddAttachment($zipFile);
但是如果我使用这个,消息的主体也不会被发送

有人能告诉我我犯的错误吗?

工作代码

$filename2 = "$key.txt";
$filename = "$key.zip";
$file_path = dirname(__FILE__);
$myfile = fopen("$file_path/$filename2", "w") or die("Unable to open file!");
fwrite($myfile, $privkey);
fwrite($myfile, $pubkey);
fclose($myfile);
$zipFile = "$file_path/$filename";
$zipArchive = new ZipArchive();

if (!$zipArchive->open($zipFile, ZIPARCHIVE::OVERWRITE)){
     die("Failed to create archive\n");
}


$zipArchive->addGlob($filename2);
if (!$zipArchive->status == ZIPARCHIVE::ER_OK){
   echo "Failed to write local files to zip\n";
}

$zipArchive->close();
try{
 //Create Email to send to user with atachment
 $message = "TEST MESSAGE";
$email = new PHPMailer();
$email->setFrom('register@gasp.grn.cc', 'Gasp Bot');
$email->addReplyTo('no-reply@gasp.grn.cc', 'No-Reply');
$email->Subject   = $subject;
$email->IsHTML(true);
$email->Body      = $message;
$email->AddAddress($to,$username);
$email->AddAttachment("$file_path/$filename");
if(!$email->Send()){
   echo "Message was not sent <p>";
   echo "Mailer Error: " . $email->ErrorInfo;
   exit;
}else{
   echo "Message has been sent";
}
}catch(phpmailerException $e){
    echo $e->errorMessage();
}catch (Exception $e){
    echo $e->errorMessage();
}
unlink ($zipFile);
unlink ("$file_path/$filename2");
使之

 $email->AddAttachment("$file_path/$filename");

works

在打开PHP标记后立即将错误报告添加到文件顶部,例如
您是如何配置mailer的?例如:-
$email->isSMTP()
您可以尝试添加一个
try/catch
,根据这个例子@DinukaDayarathna是需要的吗???,我看到很多没有它的代码,所以我认为如果(!$email->Send()){echo”消息没有发送,它可以在没有smtp的情况下使用
,“echo”邮件错误:.$email->ErrorInfo;exit;
您的代码有一个错误,没有显示错误。您可能是从GitHub获取的:)将代码替换为上面的代码,因为您的对象是
$email
,它将显示错误。
$email->isHTML(true);
工作正常?很高兴听到代码工作。:)
 $email->AddAttachment("$file_path/$filename");