猿问

来自目录的电子邮件附件并不总是最新的使用 PHPMailer

更新#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 = "hello@myemail.com";

$mail->From     = "mail@myemail.com";

$mail->FromName = "My Company";

$mail->AddReplyTo( "mail@mycompany.com", "DO NOT REPLY" );

//$mail->AddAddress("info@mycompany.com");

$mail->AddAddress("myemail@gmail.com");

$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) 返回一个附件,但它不是最新的——我需要它始终返回目录中的最新图像。


这就是我正在做的事情: 我已经创建了一个 Web 应用程序,它基本上是一个画板。当用户点击“保存”时,代码会捕捉元素的图片,将其保存到目录中,然后将画布的快照作为附件发送到预定义的地址……问题就在上面。


我所做的: 我到处寻找解决方案——似乎唯一的发现是通过网络表单上传附件——这不是我的问题。我的工作流程不同,为什么我现在在这里问。:)


什么不起作用: 除了附件部分外,一切正常。我正在使用 PHPMailer,但由于某种原因,附件从来都不是最新的。事实上,不管怎样,它似乎总是一样的执着。


我试图获取数组中的第一个元素来执行此操作(我在代码底部回显并返回正确的图像:


$mail->addAttachment($sketches[0]);

这不起作用——它发送了电子邮件,但没有附加任何内容。


我究竟该如何调整下面的代码以获取最新的附件?感谢任何帮助,因为 PHP 不是我的专业领域。


四季花海
浏览 82回答 1
1回答

阿晨1998

PHP 的函数以不确定的顺序dir()返回项目。
随时随地看视频慕课网APP
我要回答