加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

不从服务器删除电子邮件时PHP发送到mysql数据库的问题

发布时间:2020-12-13 22:47:23 所属栏目:PHP教程 来源:网络整理
导读:我正在使用这里找到的php类etodb http://www.phpclasses.org/package/3324-PHP-Retrieve-e-mail-messages-into-a-MySQL-database.html 它检查电子邮件帐户并将消息下载到mysql数据库中.它工作正常,但是在每个循环结束时(为收件箱中的每条消息循环),它会删除
我正在使用这里找到的php类etodb

http://www.phpclasses.org/package/3324-PHP-Retrieve-e-mail-messages-into-a-MySQL-database.html

它检查电子邮件帐户并将消息下载到mysql数据库中.它工作正常,但是在每个循环结束时(为收件箱中的每条消息循环),它会删除电子邮件.我知道如何阻止它删除电子邮件,但问题是由于某种原因,脚本不会将任何新电子邮件插入数据库,除非我允许它删除邮件或收件箱完全为空.

这是上面引用的php类的结尾部分.此部分只循环遍历每条消息并将其插入数据库中,如果设置它将删除消息.总结我的问题是让脚本正常工作而不需要删除邮件或有一个空的收件箱.

$total_messages = $this->num_message(); 

// IM ASSUMING THIS FOR LOOP IS NOT LOOPING MESSAGES CORRECTLY 
for ($i = 0; $i < $total_messages; $i++) {


#Get first message
$email = $this->email_get();

$ismsgdb = $this->db_add_message($email); // THIS INSERTS EACH MSG INTO DATABASE

#Get store dir
$dir = $this->dir_name();

$id_log = $this->add_db_log($email,'Copy e-mail - start ');

foreach($this->partsarray as $part){
 if($part[text][type] == 'HTML'){
   #$message_HTML = $part[text][string];
   $this->db_update_message($part[text][string],$type= 'HTML');
 }elseif($part[text][type] == 'PLAIN'){
   $message_PLAIN = $part[text][string];
   $this->db_update_message($part[text][string],$type= 'PLAIN');
 }elseif($part[attachment]){
    #Save files(attachments) on local disc

   // $message_ATTACH[] = $part[attachment];
    foreach(array($part[attachment]) as $attach){
        $attach[filename] = $this->mimie_text_decode($attach[filename]);
        $attach[filename] = preg_replace('/[^a-z0-9_-.]/i','_',$attach[filename]);
        $this->add_db_log($email,'Start coping file:"'.strip_tags($attach[filename]).'"');

        $this->save_files($this->newid.$attach[filename],$attach[string]);
        $filename =  $dir.$this->newid.$attach[filename];
        $this->db_add_attach($attach[filename],$filename);
        $this->update_db_log('<b>'.$filename.'</b>Finish coping: "'.strip_tags($attach[filename]).'"',$this->logid);
    }
  //

 }elseif($part[image]){
    #Save files(attachments) on local disc

    $message_IMAGE[] = $part[image];

    foreach($message_IMAGE as $image){
        $image[filename] = $this->mimie_text_decode($image[filename]);
        $image[filename] = preg_replace('/[^a-z0-9_-.]/i',$image[filename]);
        $this->add_db_log($email,'Start coping file: "'.strip_tags($image[filename]).'"');


        $this->save_files($this->newid.$image[filename],$image[string]);
        $filename =  $dir.$this->newid.$image[filename];
        $this->db_add_attach($image[filename],$filename);
        $this->update_db_log('<b>'.$filename.'</b>Finish coping:"'.strip_tags($image[filename]).'"',$this->logid);
    }

 }

}
$this->spam_detect();
$this->email_setflag(); 
$this->email_delete(); // WHEN I REMOVE THIS THE SCRIPT WONT GRAB NEW EMAILS
$this->email_expunge(); // WHEN I REMOVE THIS THE SCRIPT WONT GRAB NEW EMAILS




$this->update_db_log('Finish coping',$id_log);


}

解决方法

但你的问题是,在循环中,你继续抓住第一封电子邮件.

#Get first message
$email = $this->email_get();

该类有一个内部指针“$this-> msgid”,您需要递增以获取下一条消息.如果在调用函数之前将其设置为$i 1,则应获取下一条消息.

#Get message determined b $i
$this->msgeid = $i + 1;
$email = $this->email_get();

(注:编辑,现在见过来了)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读