多行'未知功能在341'使用htmlMimeMail

时间:2014-12-11 03:15:10

标签: php html mime-mail

我有一个艺术画廊客户端,他们有一个小客户邮件列表,他们发送的电子邮件邀请只包含一个图像和每三周一次的“取消订阅”行。客户端也不希望图像显示为附件。最近出现了一系列问题,这使得这项任务非常充满,所以我建立了一个通过网络服务器发送电子邮件的结构。我正在使用Richard Heyes htmlMimeMail包来执行此操作,以便可以包含图像。图像首先上传到Web服务器,并进行硬编码以重新命名,以便每次上载都会覆盖以前的图像。

如果我对一个收件人和几个Cc进行测试运行,那么代码都可以正常运行。当我在循环中使用结构向大约1500个客户端发送多封电子邮件时,我突然收到多个Unknown function implode on line 341 - prereg_match_all()行 - 返回错误并且一些(或许多)电子邮件未被发送出。我尝试了各种各样的事情,评论了prereg_match_all行及其中的一部分,它停止了错误,但每次都会出现不同的问题,例如图像未被包含在内,并且仍然会出现一些未知数量的电子邮件没有被发送。

我试图理解我的循环编码是否有问题,或者是prereg_match_all()函数代码是问题的根源。

任何帮助都非常感激。

这是htmlMimeMail中包含的未经修改的代码(我在几年前获得许可)。 BTW由于ISP在我们的共享主机上证明了PHP版本的限制,我无法让更高版本的版本工作,并且PHP的各种html邮件功能也没有被ISP编译。

/*
* Function for extracting images from  
* html source. This function will look  
* through the html code supplied by add_html()  
* and find any file that ends in one of the  
* extensions defined in $obj->image_types.  
* If the file exists it will read it in and  
* embed it, (not an attachment).  
*  
* @author Dan Allen  
*/  
function _findHtmlImages($images_dir)  
{  
    // Build the list of image extensions  
    while (list($key,) = each($this->image_types)) {  
        $extensions[] = $key;  
    }  

    preg_match_all('/(?:"|\')([^"\']+\.('.implode('|', $extensions).'))(?:"|\')/Ui', $this->html, $images);  

    for ($i=0; $i< count($images[1]); $i++) {  
        if (file_exists($images_dir . $images[1][$i])) {  
            $html_images[] = $images[1][$i];  
            $this->html = str_replace($images[1][$i], basename($images[1][$i]), $this->html);  
        }  
    }  

    if (!empty($html_images)) {  

        // If duplicate images are embedded, they may show up as attachments, so remove them.  
        $html_images = array_unique($html_images);  
        sort($html_images);  

        for ($i=0; $i< count($html_images); $i++) {  
            if ($image = $this->getFile($images_dir.$html_images[$i])) {  
                $ext = substr($html_images[$i], strrpos($html_images[$i], '.') + 1);  
                $content_type = $this->image_types[strtolower($ext)];  
                $this->addHtmlImage($image, basename($html_images[$i]), $content_type);  
            }  
        }  
    }  
}    

在发送电子邮件页面中使用此循环时,我收到错误 $user$useremail是硬编码的。使用图像上载文件时设置$subject。先前在“发送电子邮件”页面中创建了$body$text

$q=mysql_query("SELECT ``client names`` AND ``email addresses`` FROM ``the database tables`` ORDER BY ``last``");  
while($r = mysql_fetch_array($q))
{
$r=stripper($r); //included external function to stripslashes etc
$full=$r['first'].' '.$r['last'];
$em=trim($r['email']);

/* code from htmlMimeMail package */

$mail_1->setHTML($body, $text, '');
$mail_1->setReturnPath("$user <$useremail>");
$mail_1->setFrom("$user <$useremail>");
$mail_1->setSubject("$subject");
$mail_1->send(array("$full <$em>"));
}

0 个答案:

没有答案