Avatar billede terkel-g Nybegynder
05. juni 2007 - 00:37 Der er 19 kommentarer og
1 løsning

Hvorfor virker $body ikke?

Hej..

Jeg er ved at lave en mobog (som nogle nok allerede ved =D)
Men har et nyt problem (eller faktisk ikke nyt) Kan ikke få udskrevet $body, ved ikke hvorfor, men har næsten prøvet ALT.
Jeg bruger Richard Heyes Net_pop3.php og mimeDecode.php
(jeg kan godt udskrive $body via $pop3->getbody(1), men det er ulæselig)

OBS: dette er bare et test script

-------------------> Net_POP3_example.php <-----------------------

<html>
<body>
<?php

include('./POP3.php');
include('./mimeDecode.php');

$user='mob@domæne.com';
$pass='PASSWORD';
$host='pop.domæne.com';
$port="110";

// Create the class
$pop3 =& new Net_POP3();


//$pop3->setDebug();

// Connect to localhost on usual port
// If not given, defaults are localhost:110

if(PEAR::isError( $ret= $pop3->connect($host , $port ) )){
    echo "ERROR: " . $ret->getMessage() . "\n";
    exit();
}


// Login using username/password. APOP will
// be tried first if supported, then basic.

//$pop3->login($user , $pass , 'APOP');
//$pop3->login($user , $pass , 'CRAM-MD5');

if(PEAR::isError( $ret= $pop3->login($user , $pass,'USER' ) )){
    echo "ERROR: " . $ret->getMessage() . "\n";
    exit();
}


$params = array(
                    'input'          => $message,
                    'crlf'          => "\r\n",
                    'include_bodies' => TRUE,
                    'decode_headers' => TRUE,
                    'decode_bodies'  => TRUE
                  );
                 
$message=new Mail_mimeDecode($pop3->getMsg(1));
$mailObj=$message->decode($params);


// Get Message Body
$body=$mailObj->parts[0]->body;
// Who is it from
$from=$mailObj->headers['from'];
// Get Subject
$subj=$mailObj->headers['subject'];
// Get Date
$date=$mailObj->headers['date'];
//Get content type
$contenttype=$mailObj->parts[0]->headers['content-type'];
//Get includes type
$type=$mailObj->parts[1]->ctype_secondary;
//Get Includes
$tmp=$mailObj->parts[1]->d_parameters['filename'];
//Get to email address
$to=$mailObj->headers['to'];
//Get total mails
$tot = $pop3->numMsg();
//Get size on email
$size = $pop3->getSize();


echo "Subject: <b>".$subj."</b><br />";
echo "From: <b>".$from."</b><br />";
echo "To: <b>".$to."</b><br />";
echo "Include: <b>".$tmp."</b><br />";
echo "type: <b>".$type."</b><br />";
echo "Content type: <b>".$contenttype."</b><br />";
echo "Date: <b>".chgFormatDate($date)."</b><br />";
echo "Size: <b>".$size."</b> kb<br />";
echo "----------------------------<br />";

echo $body;

//$pop3->getBody(1)

//$pop3->deleteMsg(1);
// Disconnect
$pop3->disconnect();

//Date function
function chgFormatDate($date){
  $timestamp = strtotime($date);
  $date = date('d-m-Y H:i:s', $timestamp);
  return $date;
}
?>
Avatar billede jakobdo Ekspert
05. juni 2007 - 08:03 #1
Er du sikker på $body bliver sat korrekt her: $body=$mailObj->parts[0]->body; ?
Avatar billede terkel-g Nybegynder
05. juni 2007 - 10:28 #2
Ja.. Men det der er mærkeligt er at den kommer en gang imellem
Avatar billede terkel-g Nybegynder
05. juni 2007 - 10:29 #3
Den kommer en gang imellem, men når så jeg roder lidt med scriptet forsvinder den. Men ved ikke hvad jeg kommer til at gøre
Avatar billede jakobdo Ekspert
05. juni 2007 - 13:38 #4
Og det er ikke andre steder du kunne få sat $body = '';
Eller at $mailObj->parts[0]->body; kunne tænkes den var tom?
F.eks. i en multipart email html og plain/text ?
Avatar billede terkel-g Nybegynder
05. juni 2007 - 14:27 #5
Det tror jeg ikke, men det der er mærkeligt den kommer nogle få gange.
Avatar billede jakobdo Ekspert
05. juni 2007 - 14:53 #6
Kan du se nogen forskelle i sourcen på de emails du leger med?
Avatar billede terkel-g Nybegynder
05. juni 2007 - 21:29 #7
Tjaa, ikke lige hvad jeg tænkt over. Jeg sender mine test E-mails fra Thunderbird og Gmail. Det er nok desværre lidt svært at hjælpe Jakobdo, når du ikke har scriptet.

Du kan hente det her http://www.terkel-g.com/file.rar
(hvis du vil =D)
Avatar billede jakobdo Ekspert
05. juni 2007 - 21:49 #8
Har du prøvet det eksempel de viser i koden:

* $decode = new Mail_mimeDecode($input, "\r\n");
* $structure = $decode->decode();
* print_r($structure);
Avatar billede terkel-g Nybegynder
06. juni 2007 - 14:24 #9
Det virker ikke =(
Avatar billede jakobdo Ekspert
06. juni 2007 - 14:37 #10
og du har i forlængelse af din kode lavet:
$message=new Mail_mimeDecode($pop3->getMsg(1));
$structure = $message->decode();
print_r($structure);
Avatar billede terkel-g Nybegynder
06. juni 2007 - 14:44 #11
Jeg slettede:
$message = new Mail_mimeDecode($pop3->getMsg(1));
$mailObj = $message->decode();

Og i stedet for det:
$message = new Mail_mimeDecode($pop3->getMsg(1), "\r\n");
$mailObj = $message->decode();

men samme resultat.
Avatar billede jakobdo Ekspert
06. juni 2007 - 15:12 #12
Prøv efter:
$mailObj = $message->decode();

echo '<pre>';
print_r($mailObj);
echo '</pre>';

Og se hvad der kommer ud?
Avatar billede terkel-g Nybegynder
06. juni 2007 - 15:29 #13
Sygt. der komme ikke nogen body, MineDecode kan måske bare ikke læse body's sendt fra Gmail eller Thunderbird!
Avatar billede jakobdo Ekspert
06. juni 2007 - 15:37 #14
Så skal du igang med at se hvad sourcen er, som kommer in til new Mail_mimeDecode().
Måske en fejl i deres klasse eller fejl i gmails/thunderbird måde at opbygge emails! :o)
Avatar billede terkel-g Nybegynder
06. juni 2007 - 17:02 #15
Hehe Ja..
Konklusion:
Problemet er at MimeDoce ikke kun filter unødvendigt stuff fra men også selve tekst og html tags. pop3->getbody er et eksempel på at body er der, men desværre i binær form
<------->
1000 Tak for din hjælp Jakodo, Super! =D

OBS - send lige et svar, så kan du få dine point
Avatar billede jakobdo Ekspert
06. juni 2007 - 17:20 #16
Svar!
Avatar billede jakobdo Ekspert
06. juni 2007 - 17:30 #17
Jeg takker for point.
Avatar billede terkel-g Nybegynder
06. juni 2007 - 20:06 #18
Så lidt..kender du et anden script? :o)
Avatar billede jakobdo Ekspert
06. juni 2007 - 20:12 #19
Til at fetche emails?
Du kan jo evt. kigge på sourcen til http://www.squirrelmail.org/
Avatar billede terkel-g Nybegynder
06. juni 2007 - 20:18 #20
Det gør jeg ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester