2012-10-11 5 views
8

Ich versuche, eine E-Mail-Nachricht zu holen und eine Antwort an den Lerner basierend darauf zu senden. Aber ich erhalte einen Fehler Notice: Undefined property: stdClass::$subject während der Ausführung meines Codes. Ich bin wirklich verloren, ich weiß nicht, was ich tun soll. Ich poste den Code unten.Hinweis: Nicht definierte Eigenschaft: stdClass: Fehler

<?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

Der Fehler scheint ziemlich offensichtlich, '$ Überblick [0] -> subject' ist nicht definiert :) also wäre 'var_dump ($ overview [0])' der nächste Schritt. –

+0

Aber ich wundere mich, warum nur die $ Übersicht [0] -> Thema definieren. Wann gibt es mehr ähnliche Daten wie von und Datum? – faz

Antwort

17

Aus der Dokumentation für imap_fetch_overview:

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

So prüfen Sie, ob die Eigenschaft zuerst gesetzt: Nachricht

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

aussortiert. Vielen Dank. Diese spezielle Mail hatte kein Thema. – faz

+0

Rette meinen Tag, danke Mann! –