【发布时间】:2011-04-20 21:23:59
【问题描述】:
以下解决方案
大家好。我一直在尝试不同的方法来解决这个问题,但仍然遇到同样的错误。我有一个表格,您可以在其中选择一些用户的电子邮件地址和一些 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);
}
}
解决方案
以下代码可以更好地使用内存:
$from = "it@example.com";
echo '来自:'.$from."\n"; echo '主题:'.$_POST[主题]."\n"; echo '文本:'.$_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] 。 "/"; ////////////////////如果php程序的位置曾经移动////////////////////////////////////////////////////////////// /////////////// $fileatt = $文件路径。 $文件名; $message->addAttachment($fileatt); echo '附加文件:'.$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 '发送邮件到:'.$recipient."\n"; } }
【问题讨论】: