2011-12-29 3 views
1

Пользователь на форумах w3schools помог мне с некоторым кодом в использовании функций IMAP, чтобы проверить почту в почтовом ящике на частном сервере и сделать то, что мне нравится, я создал свой собственный набор функций для размещение содержимого электронной почты в таблице MySQL.Открытие электронной почты с помощью PHP IMAP

Может ли кто-нибудь помочь мне найти решение, как я могу открыть почтовый ящик электронной почты, проверить электронную почту в папке «Входящие» (там будет только один, поскольку предыдущие электронные письма будут автоматически удалены. mail как $ open_email_msg Позвольте мне инициировать мой набор команд для размещения сообщения электронной почты в таблице MySQL, а затем удалить адрес электронной почты и закрыть папку «Входящие»?

Это код, который мне помог:

<?php 

$now = time(); // current time 

$mailbox = '{192.168.150.11:143/imap/novalidate-cert}'; // see http://www.php.net/manual/en/function.imap-open.php 
$mbox = imap_open($mailbox, 'username', 'password'); // log in to mail server 

if (!$mbox) 
    echo ('Failed opening mailbox<br>' . print_r(imap_errors(), true)); // remove the print_r for production use 
else 
{ 
    $box = imap_check($mbox); // get the inbox 

    for ($imap_idx = 1; $imap_idx <= $box->Nmsgs; $imap_idx++) // loop through the messages 
    { 
    $headers = imap_headerinfo($mbox, $imap_idx); // http://www.php.net/manual/en/function.imap-headerinfo.php 
    $raw_headers = imap_fetchheader($mbox, $imap_idx); // http://www.php.net/manual/en/function.imap-fetchheader.php 
    $selected_headers = ''; 
    $text_part = ''; 
    $html_part = ''; 
    $original_message = imap_body($mbox, $imap_idx); // save the copy of the entire thing, attachments and all 

    // build selected headers string 
    for ($ii = 0; $ii < count($headers->from); $ii++) 
     $selected_headers .= 'From: ' . $headers->from[$ii]->mailbox . '@' . $headers->from[$ii]->host . "\n"; 
    for ($ii = 0; $ii < count($headers->to); $ii++) 
     $selected_headers .= 'To: ' . $headers->to[$ii]->mailbox . '@' . $headers->to[$ii]->host . "\n"; 
    for ($ii = 0; $ii < count($headers->cc); $ii++) 
     $selected_headers .= 'Cc: ' . $headers->cc[$ii]->mailbox . '@' . $headers->cc[$ii]->host . "\n"; 
    for ($ii = 0; $ii < count($headers->bcc); $ii++) 
     $selected_headers .= 'Bcc: ' . $headers->bcc[$ii]->mailbox . '@' . $headers->bcc[$ii]->host . "\n"; 
    if (!empty($headers->date)) 
     $selected_headers .= 'Date: ' . $headers->date . "\n"; 
    if (!empty($headers->subject)) 
     $selected_headers .= 'Subject: ' . $headers->subject . "\n"; 



    // see below; getMsg uses global variables 
    getMsg($mbox, $imap_idx); 

    $text_part = $plainmsg; // text portion of the email 
    $html_part = $htmlmsg; // html portion of the email 

    // check for text portion first 
    $msg_text = trim(strip_tags($plainmsg 

ответ

0

Попробуйте этот код, чтобы читать сообщения электронной почты.

 $username=$email; // e.g. [email protected] 
     $password='password'; 

     $hostname = '{example.com:995/pop3/ssl/novalidate-cert}'; 
     $username = $username; $password = $password; $imap = imap_open($hostname,$username,$password) or die('Cannot connect: ' . imap_last_error()); 

      $message_count = imap_num_msg($imap); 
      // print $message_count; 


    for ($i = 1; $i <= $message_count; ++$i) 
      { 
       $header = imap_header($imap, $i); 
       $body = imap_fetchbody($imap, $i,2); 
       $prettydate = date("jS F Y", $header->udate); 

       if (isset($header->from[0]->personal)) { 
        $personal = $header->from[0]->personal; 
       } else { 
        $personal = $header->from[0]->mailbox; 
       } 

     $subject=$header->Subject; 

    $email = "$personal <{$header->from[0]->mailbox}@{$header->from[0]->host}>"; 
       echo "On $prettydate, $email said \"$body\".\n"; 
       echo '<br><br>'; 
      } 

     print_r(imap_errors()); 
     imap_close($imap); 
} 
0

Я считаю, что this link поможет вам, поскольку я использовал это сам, и это правильно работает для меня.

Там вы можете зарегистрировать и скачать код, используя его просто.

Или то, что вы можете сделать, если вы хотите получить информацию заголовка только:

$mbox = imap_open("{[email protected]:995/pop3/ssl/novalidate-cert}INBOX", '[email protected]', 'pass') 
       or die("can't connect: " . imap_last_error()); 


$MC = imap_check($mbox); 
    $result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0); 

    foreach ($result as $overview) { 
    echo "#{$overview->msgno} ({$overview->date}) - From: {$overview->from} 
    {$overview->subject}\n"; 
    echo "<br>"; 
} 
Смежные вопросы