2012-10-11 7 views
8

Próbuję pobrać treść wiadomości e-mail i wysłać na jej podstawie odpowiedź. Ale podczas wykonywania mojego kodu pojawia się błąd Notice: Undefined property: stdClass::$subject. Naprawdę gubię się, nie wiedząc, co robić. Zamieszczam poniższy kod.Uwaga: Niezdefiniowana właściwość: stdClass: error

<?php 

$server = '{imap.aaa.com:993/imap/ssl}INBOX'; 
$username = '[email protected]'; 
$password = 'aaaaaa'; 
require_once '../swift/lib/swift_required.php'; 

$connection = imap_open($server,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error()); 

$result = imap_search($connection,'ALL'); 
if($result) { 


    $output = ''; 


    rsort($result); 


    foreach($result as $email_number) { 

    $overview = imap_fetch_overview($connection,$email_number,0); 
    $message = imap_fetchbody($connection,$email_number,2); 

    $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">'; 
    $output.= '<span class="subject">'.$overview[0]->subject.'</span> '; 
    $output.= '<span class="from">'.$overview[0]->from.'</span>'; 
    $output.= '<span class="date">on '.$overview[0]->date.'</span>'; 
    $output.= '</div>'; 

    $output.= '<div class="body">'.$message.'</div>'; 

    if ($message == signup) 

    { 

$transport = Swift_MailTransport::newInstance(); 
$mailer = Swift_Mailer::newInstance($transport); 

$message1 = Swift_Message::newInstance('new message') 
    ->setFrom(array('[email protected]' => 'name')) 
    ->setTo(array('[email protected]')) 
    ->setBody($message); 


    $mail = $mailer->send($message1); 
    } 

    } 
} 

else 
{ 
    echo "false return"; 
} 
?> 
+0

Komunikat o błędzie wydaje się dość oczywiste, '$ przegląd [0] -> temat nie jest zdefiniowany :) więc 'var_dump ($ overview [0])' będzie następnym działaniem. –

+0

Ale zastanawiam się, dlaczego zdefiniować tylko przegląd $ [0] -> temat. Kiedy jest więcej podobnych danych, takich jak data i godzina? – faz

Odpowiedz

17

Z dokumentacji imap_fetch_overview:

 
Returns an array of objects describing one message header 
each. The object will only define a property if it exists. 

więc sprawdzić, czy właściwość jest ustawiona pierwsza:

if (isset($overview[0]->subject)) 
{ 
    $output.= '<span class="subject">'.$overview[0]->subject.'</span> '; 
} 
+0

uporządkowane. Dziękuję Ci. Ta konkretna poczta nie miała tematu. – faz

+0

Uratuj mój dzień, dzięki człowieku! –