更新#2--最后的答案。我想,而且你会在下面的评论中看到,我的比较符号需要改变。所以我把更新#1中的代码简单地改了一下。
return filemtime($a) < filemtime($b);
改成:
return filemtime($a) > filemtime($b);
这样就搞定了!!!谢谢大家的对话框。
更新我已经更新了我的代码。现在我收到了发送的附件,但是又没有抓取到最新的附件。这是我最新的代码。
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'php/PHPMailer2020/src/Exception.php';
require 'php/PHPMailer2020/src/PHPMailer.php';
$dir = "php/sketch-drawings/";
$pics = scandir($dir);
$files = glob($dir . "*.*");
usort($files, function($a, $b){
return filemtime($a) < filemtime($b);
});
foreach ($files as $pics) {
echo '<img src="'. $pics . '">';
}
// SEND EMAIL W/ ATTACHMENT OF LATEST IMAGE
$mail = new PHPMailer();
$mail->Sender = "[email protected]";
$mail->From = "[email protected]";
$mail->FromName = "My Company";
$mail->AddReplyTo( "[email protected]", "DO NOT REPLY" );
//$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->isHTML(true);
$mail->Subject = "Latest Sketch Image";
$mail->Body = "Latest Image Attached! \n\n Thanks - XYZ Digital.";
$mail->AddAttachment($pics);
if(!$mail->Send()) {
echo 'Email Failed To Send.';
}
else {
echo 'Email Was Successfully Sent.';
echo "</p>";
echo '<script language="javascript">';
echo 'alert("Thanks! Message Sent")';
echo '</script>';
}
$mail->ClearAddresses();
?>
这个问题: AddAttachment($filepath)会返回一个附件 但不是最新的那个... 我需要它总是返回目录中最新的图片。
下面是我正在做的事情。我创建了一个网络应用程序 基本上就是一个草图垫。当用户点击 "保存 "时,代码会抓取一张元素的图片保存到一个目录中,然后用抓取的画布作为附件发送一封电子邮件到预定义的地址......问题就在上面。
我做了什么。我找遍了所有的地方寻找解决办法... 好像唯一能找到的办法就是通过网络表格上传附件... 这不是我的问题 我的工作流程是不同的,所以我现在在这里问 :)
什么是不工作。除了附件部分,一切都能正常工作。我使用的是 PHPMailer,但不知为什么,附件永远不是最新的。事实上,无论怎样,它似乎总是同一个附件。
我试着用这样的方法来获取数组中的第一个元素(我在代码的底部呼应了一下,它返回了正确的图片。
$mail->addAttachment($sketches[0]);
这不起作用 -- 它发送了邮件,但没有任何附件。
我到底该如何调整下面的代码来获取最新的附件?我感谢任何帮助,因为PHP不是我的专业领域。
请看下面的代码...
<?php // NEW
// DEFINE ERRORS
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer2020/src/Exception.php';
require 'PHPMailer2020/src/PHPMailer.php';
// GET LATEST UPLOAD -- AND HAVE IT STORED IN DOM (WHEN NEEDED)
$path = ('sketch-drawings');
// Sort in descending order
$sketches = scandir($path, 1);
$latest_ctime = 1;
$latest_filename = '';
$d = dir($path);
while (false !== ($entry = $d->read())) {
$filepath = "{$path}/{$entry}";
// could do also other checks than just checking whether the entry is a file
if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
}
// SEND EMAIL W/ ATTACHMENT OF LATEST IMAGE
$mail = new PHPMailer();
$mail->Sender = "[email protected]";
$mail->From = "[email protected]";
$mail->FromName = "My Company";
$mail->AddReplyTo( "[email protected]", "DO NOT REPLY" );
//$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->isHTML(true);
$mail->Subject = "Latest Sketch Image";
$mail->Body = "Latest Image Attached! \n\n Thanks - XYZ Digital.";
$mail->AddAttachment($filepath);
//$mail->addAttachment($sketches);
if(!$mail->Send()) {
echo 'Email Failed To Send.';
} else {
echo $filepath;
echo "<br><br>";
print $latest_filename;
echo "</p>";
echo "<p>";
print $sketches[0];
echo "</p>";
echo "<p>";
echo 'Email Was Successfully Sent.';
echo "</p>";
echo '<script language="javascript">';
echo 'alert("Thanks! Message Sent")';
echo '</script>';
}
$mail1->ClearAddresses();
}
?>