Solution ci-dessousPHP et PEAR :: Courrier mémoire Épuisement
Salut les gars. J'ai essayé différentes manières d'approcher cela mais j'ai toujours la même erreur. J'ai un formulaire où vous pouvez sélectionner certaines adresses e-mail des utilisateurs et certains fichiers pdf et il va leur envoyer. Le problème est que PHP va lancer une erreur car le script utilise des quantités massives de mémoire (plus de 90 meg). J'ai essayé d'employer mail() et essaye maintenant PEAR: Mail_Mime Y at-il une autre manière que je peux faire ceci?
include_once('Mail.php');
include_once('Mail/mime.php');
$from = "[email protected]";
$subject = $_POST[subject];
$text = $_POST[message];
if (count($_POST[emailEnq]) > 0) {
foreach ($_POST[emailEnq] as $Ekey => $Evalue) {
$message = new Mail_mime();
$message->setTXTBody($text);
if (count($_POST[emailFile]) > 0) {
foreach ($_POST[emailFile] as $key => $value) {
$filepath = "/home/mds07/console/admin/media/listings/" . $_POST[list_ID] . "/docs/";
////////////////////You will need to change the above line if the location of the PHP program ever moves////////////////////////////
$fileatt = $filepath . $value;
$message->addAttachment($fileatt);
}
}
$body = $message->get();
$extraheaders = array("From" => $from, "Subject" => $subject);
$headers = $message->headers($extraheaders);
$mail = Mail::factory("mail");
$mail->send($Evalue, $headers, $body);
}
}
SOLUTION
Le code suivant fonctionne avec une meilleure utilisation de la mémoire:
$from = "[email protected]";
echo 'From: '.$from."\n"; echo 'Subject: '.$_POST[subject]."\n"; echo 'Text: '.$_POST[message]."\n";
include_once('Mail.php'); include_once('Mail/mime.php'); $message = new Mail_mime(); $message->setTXTBody($_POST[message]); if (count($_POST[emailFile]) > 0) { foreach ($_POST[emailFile] as $key => $filename) { $filepath = "/home/mds07/console/admin/media/listings/" . $_POST[list_ID] . "/"; ////////////////////You will need to change the above line if the location of the PHP program ever moves//////////////////////////// $fileatt = $filepath . $filename; $message->addAttachment($fileatt); echo 'Attached File: '.$filename."\n"; } } $body = $message->get(); $extraheaders = array("From" => $from, "Subject" => $_POST[subject]); $headers = $message->headers($extraheaders); $mail = Mail::factory("mail"); if (count($_POST[emailEnq]) > 0) { foreach ($_POST[emailEnq] as $key => $recipient) { $mail->send($recipient, $headers, $body); echo 'Sent mail to: '.$recipient."\n"; } }
C'est génial. Pensez à ajouter votre nouveau code de travail à votre question pour un look plus complet, au lieu de l'avoir dans une réponse par vous-même. – Fanis