Avatar billede krydset Nybegynder
29. juni 2004 - 21:29 Der er 3 kommentarer og
1 løsning

Åbne email med imap_body()

Hejsa, jeg sidder og er ved at lave en webmail. men er kommet ud for et problem.

Jeg henter mails på den her måde
<?PHP
$mbox = imap_open("{".$_SESSION['server'].":143}", $_SESSION['username'], $_SESSION['password']);
$string = imap_body($mbox, $_GET['id']);
echo $string;
?>

Men når jeg echo´er $string kommer der bare en masse vollapyk.

såsom det her

-----------------------------------------------------------------

--=_1d364a6a7e9874e907e545a616c70ba8 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Sp=F8rgsm=E5l : showmodaldialog i explorer Bruger : bongo20 Kategori : Programmering : (D)HTML Point : 30 Link : http://exp.dk/spm/514737 ------------------------------------ I exploreren er der mulighed for at bruge showmodaldialog, genialt. Men hvad g=F8r man med andre browsere? Er der ikke noget, og lader man derfor ogs=E5 v=E6re med at bruge showmodal= dialog i exploreren? ------------------------------------ =D8nsker du ikke l=E6ngere at abonnere p=E5 kategorien kan du v=E6lge den f= ra via din konto side eller dette link: http://exp.dk/afmeld.phtml?catid=3D8&key=3De50975fc65e8d141b718d762f1d716b5 Venlig hilsen Eksperten Vil du annoncere i Eksperten mails eller p=E5 www.eksperten.dk? Kontakt: Peer Jensen, 77 300 221, p.jensen@idg.dk --=_1d364a6a7e9874e907e545a616c70ba8 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Programmering : (D)HTML : showmodaldialog i= explorer
Sp=F8rgsm=E5l showmoda= ldialog i explorer
Bruger bongo20
Kategori = Programmering : (D)HTML
Point 30


I explor= eren er der mulighed for at bruge showmodaldialog, genialt.=0D
Men hva= d gør man med andre browsere?=0D
Er der ikke noget, og lader ma= n derfor også være med at bruge showmodaldialog i exploreren?
=D8nsker du ikke l=E6ngere at abonnere p=E5 kategorien kan du v=E6lg= e den fra via din k= onto side eller dette link.

<= p>Venlig hilsen Eksperten


Vil du annoncere i Eksperten mails eller= p=E5 www.eksperten.dk?
Kontakt: Peer Jensen, 77 300 221, p.jensen@idg.dk --=_1d364a6a7e9874e907e545a616c70ba8--

----------------------------------------------------------------
Det skulle eftersigende være en html mail fra eksperten, men det ligner det ikke rigtig lige.

Nogen der kan hjælpe mig med at få det til at ligne en html side eller bare alm. text ?

Mvh Krydset
Avatar billede coderdk Praktikant
29. juni 2004 - 23:45 #1
imap_body henter bare hele den "rå" besked. Du skal bruge:

  http://dk.php.net/imap_fetchstructure

og

  http://dk.php.net/imap_fetchbody

Der er nogle gode eksempler på dem begge! Fetchstructure giver dig et object som du kan lave print_r på hvis du vil undersøge den nærmere!
Avatar billede krydset Nybegynder
30. juni 2004 - 00:34 #2
Ja fandt dem osse tidligere, og burde osse ha lukket her men glemte det, fandt nemlig de 2 som du siger og fik bakset det her sammen

<?PHP
$mbox = imap_open("{".$_SESSION['server'].":143}", $_SESSION['username'], $_SESSION['password']);
$mailid = $_GET['id'];
$mailheader = imap_headerinfo($mbox, $mailid);
$rawsubject = imap_mime_header_decode($mailheader->subject);
$msubject = $rawsubject[0]->text;
$mfrom = htmlspecialchars(str_replace("\"", "", $mailheader->fromaddress));
$mto = htmlspecialchars(str_replace("\"", "", $mailheader->toaddress));
$mdate=$mailheader->Date;


//Getting the mails structure
$structure = imap_fetchstructure($mbox, $mailid);
$apart = imap_fetchbody($mbox, $mailid, 1);
$apart_info = $structure->parts[0];
if($apart_info->type == 1) { //Multipart type
    $apart = imap_fetchbody($mbox, $mailid, 1.1);
    $apart_info = $structure->parts[0]->parts[0];
    $ahtmlpart = imap_fetchbody($mbox, $mailid, 1.2);
    $anencode = $apart_info->encoding;
    if($anencode == 3) {
        $msghtmlbody = imap_base64($ahtmlpart);
    } else if($anencode == 4) {
        $msghtmlbody = imap_qprint($ahtmlpart);
    } else {
        $msghtmlbody = $ahtmlpart;
    }
}

$anencode = $apart_info->encoding;
if($anencode == 3) {
    $msgtextbody = imap_base64($apart);
} else if($anencode == 4) {
    $msgtextbody = imap_qprint($apart);
} else {
    $msgtextbody = $apart;
}
         
if(@$msghtmlbody > '') {
    echo $msghtmlbody;
} else {
?>
<?php
$msgtextbody =preg_replace('/[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}/i','<a href="in.php?link=reply_mail.php?id='.$mailid.'&email=$0">$0</a>', $msgtextbody);
$msgtextbody = eregi_replace("([[:space:]{()\"'\[~#=;\&?\_-])((ftp|http|https|telnet|news|nttp|nntp|file):\/\/[a-z0-9~#%@\&\(\):;=\?\/\.,_-]+(\\[|\\]|[a-z0-9~#%@\&:;,=\?\/_\+-])+)", "\\1<a href=\"\\2\" TARGET=\"_blank\">\\2</a>", $msgtextbody);

?>
<div style="BACKGROUND-COLOR: #EBEBEB">
<table border="0" width="100%">   
    <tr>
        <td>
            <table border="0" bgcolor="orange" width="100%">
                <tr>
                    <td>Fra: <?php echo $mfrom; ?></td>
                </tr>
                <tr>
                    <td>Til: <?php echo $mto; ?></td>
                </tr>
                <tr>
                    <td>Dato: <?php echo substr($mdate,0, 22); ?></td>
                </tr>
            </table>
        </td>
    </tr>
</table>

<font face=Arial size=3><? echo "<pre>".$msgtextbody."</pre>"; ?></font>
</div>
<?
}; /// if html
?>


Efter min mening virker det fint, har du nogen indvendinger til det ?
Avatar billede coderdk Praktikant
30. juni 2004 - 13:06 #3
Næææh det ser umiddelbart ok ud, svar selv og tag dine points igen :)
Avatar billede krydset Nybegynder
30. juni 2004 - 15:01 #4
Oki :-D ses
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