Открытие электронной почты с PHP IMAP - PullRequest
1 голос
/ 29 декабря 2011

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

Может ли кто-нибудь помочь мне найти решение, как я могу открыть почтовый ящик, проверить электронную почту в почтовом ящике (там будет только один, потому что предыдущие электронные письма будут автоматически удалены. Определите открытую электронную почту сообщение как $ 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

Ответы [ 2 ]

0 голосов
/ 24 октября 2013

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

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

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

$mbox = imap_open("{xyz@abc.com:995/pop3/ssl/novalidate-cert}INBOX", 'abc@xyz.com', '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>";
}
0 голосов
/ 22 марта 2013

Попробуйте этот код для чтения электронных писем.

     $username=$email; // e.g. test@example.com
         $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);
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...