2012-10-11 28 views
8

Estoy intentando buscar un cuerpo de correo electrónico y enviar una respuesta al alumno en función de él. Pero recibo un error Notice: Undefined property: stdClass::$subject al ejecutar mi código. Estoy realmente perdido sin saber qué hacer. Estoy publicando el código a continuación.Aviso: Propiedad indefinida: 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

El mensaje de error parece bastante obvio, 'visión general $ [0] -> subject' no está definido :) así que 'var_dump ($ overview [0])' sería el siguiente curso de acción. –

+0

Pero me pregunto por qué definir solo el tema $ overview [0] ->. ¿Cuándo hay datos más similares como desde y fecha? – faz

Respuesta

17

De la documentación de imap_fetch_overview:

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

a fin de comprobar si la propiedad se establece en primer lugar:

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

resuelto. Gracias. Este correo en particular no tiene un tema. – faz

+0

¡Salva mi día, gracias hombre! –

Cuestiones relacionadas