Решение ниже
Привет, ребята. Я пытался по-разному подойти к этому, но все еще сталкивался с той же ошибкой. У меня есть форма, где вы можете выбрать адреса электронной почты некоторых пользователей и PDF-файл, и он будет отправлять им. Проблема в том, что PHP выдаст ошибку, потому что скрипт использует большие объемы памяти (более 90 мегабайт). Я пытался использовать mail () и теперь пытаюсь использовать PEAR: Mail_Mime. Есть ли другой способ сделать это?
include_once('Mail.php');
include_once('Mail/mime.php');
$from = "it@example.com";
$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);
}
}
РЕШЕНИЕ
Следующий код работает с гораздо лучшим использованием памяти:
<pre>
$from = "it@example.com";</p>
<p>echo 'From: '.$from."\n";
echo 'Subject: '.$_POST[subject]."\n";
echo 'Text: '.$_POST[message]."\n";</p>
<p>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";
}
}