Email depuis son GSM et problème pop / SME 7

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

Email depuis son GSM et problème pop / SME 7

Messagepar jcp » 03 Avr 2008 14:21

Bonjour a tous,

J’ai une petite application en php développé par un ami qui me permettait en SME 6 de lire mes emails perso depuis mon GSM (WAP ou IMODE)
Une page qui effectuait un accès pop et lisait tous mes emails, superbement simple d’utilisation et ultra pratique.

J’ai copié l’application sur mon nouveau SME 7.3. Elle fonctionnait sous SME 6.1

Et plus rien ne fonctionne !! j’ai ca comme message d’erreur…
J’ai l’impression que le problème vient du fait que pop n’est plus accessible coté publique et que cela devrait être le cas en SME 6 …
Le php n’étant pas mon fort….

- Si le source vous intéresse pour l’améliorer ou le faire fonctionner (100 Ko en zip) je peux le mettre en publique ….

- Si quelqu’un a une idée, car c’est entre autre une application que j’utilisais tous les jours, pour lire mes emails perso depuis mon GSM…

Cordialement,

Jean-Christophe


Le message d’erreur :

Warning: imap_open() [function.imap-open]: Couldn't open stream {xxx.yyy.zzzzz:110/pop3} in /home/…../mail.php on line 251

Warning: imap_headers(): supplied argument is not a valid imap resource in /home/…./mail.php on line 314
Erreur !
Warning: imap_close(): supplied argument is not a valid imap resource in /home/…./mail.php on line 382
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar unnilennium » 03 Avr 2008 21:34

essaye de mettre localhost si c'est pour lire les mesage de ta sme avec ton script php.

as tu autorisé l'acces pop et imap, et le webmail dans le manager ?

logiquement si le script est sur la meme SME il est considéré comme local. Peut etre (j'ai pas vérifié) qu'en cas de webmail non activé la connexion depuis localhost est pas autorisée.


ton script mail utilise t il des fonctions systemes , auquel cas il faut lui autoriser l'accès a ces fonctions car la directive php_base_dir de sme 7 empêche de sortir de l'ibay par defaut.


voila qq pistes
Unnilennium / http://smeserver.pialasse.com
________________________

IRC: chat.freenode.net/6667 channel: #sme-fr

newsgroup: alt.e-smith.fr
____________________
unnilennium
Vice-Amiral
Vice-Amiral
 
Messages: 749
Inscrit le: 21 Sep 2004 10:30
Localisation: Québec, Qc, Canada

Messagepar jcp » 04 Avr 2008 11:19

unnilennium a écrit:essaye de mettre localhost si c'est pour lire les mesage de ta sme avec ton script php.

as tu autorisé l'acces pop et imap, et le webmail dans le manager ?

logiquement si le script est sur la meme SME il est considéré comme local. Peut etre (j'ai pas vérifié) qu'en cas de webmail non activé la connexion depuis localhost est pas autorisée.


ton script mail utilise t il des fonctions systemes , auquel cas il faut lui autoriser l'accès a ces fonctions car la directive php_base_dir de sme 7 empêche de sortir de l'ibay par defaut.


voila qq pistes


Bonjour,

Pour un complement d'information :

- Webmail fonctionne sur mon SME

J'ai mis la procedure chez FREE, et j'arrive bien a acceder a mon compte free MAIS pas a mon compte pop sur SME
Si je met ma procedure sur mon SME, je n'arrive PAS a acceder a mon compte POP NI chez Free NI sur mon SME....

Bizarre non ?

Quand tu parles de fonction systeme c'est lequel ?

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar jcp » 04 Avr 2008 11:22

Voici le source, du programme principale
Le fichier config.php contient juste le compte/mot de passe et l'url de la boite pop
Le fichier lib_imode.php contient l'acces a des images gif

Code: Tout sélectionner
<html>
<head><title>GSMMail</title></head>
<body bgcolor=#FFCCCC>
<img src="logo.gif">
<br>
<?

include "../lib_imode.php";

include "config.php";

$port['imap']="143/imap/notls";
$port['imapssl']="143/imap/ssl";
$port['pop']=110;

//------------------------------------------------------
function get_mime_type(&$structure)
    {
    $primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
    if($structure->subtype)
        {
        return $primary_mime_type[(int) $structure->type] . '/' . $structure->subtype;
        }
    return "TEXT/PLAIN";
    }

function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false)
    {
    if(!$structure)
        {
        $structure = imap_fetchstructure($stream, $msg_number);
        }
    if($structure)
        {
        if($mime_type == get_mime_type($structure))
            {
            if(!$part_number)
                {
                $part_number = "1";
                }
            $text = imap_fetchbody($stream, $msg_number, $part_number);
            if($structure->encoding == 3)
                {
                return imap_base64($text);
                }
            else
                if($structure->encoding == 4)
                    {
                    return imap_qprint($text);
                    }
                else
                    {
                    return $text;
                    }
            }
        if($structure->type == 1) /* multipart */
            {
            while(list($index, $sub_structure) = each($structure->parts))
                {
                if($part_number)
                    {
                    $prefix = $part_number . '.';
                    }
                $data = get_part($stream, $msg_number, $mime_type, $sub_structure, $prefix . ($index + 1));
                if($data)
                    {
                    return $data;
                    }
                }
            }
    }
    return false;
    }

// get plain text
// $data = get_part($stream, $msg_number, "TEXT/PLAIN");
// get HTML text
// $data = get_part($stream, $msg_number, "TEXT/HTML");


//------------------------------------------------------

function parse_message($obj, $prefix="")
    {
    /* Here you can process the data of the main "part" of the message, e.g.: */
    //echo $obj;


    if (sizeof($obj->parts) > 0)
        foreach ($obj->parts as $count=>$p)
            parse_part($p, $prefix.($count+1));
    }

function parse_part($obj, $partno)
    {
    /* Here you can process the part number and the data of the parts of the message, e.g.: */
    //switch ($obj->type) {
                switch ($obj->type) {
                case TYPETEXT:
                    $mime_type = "text";
                    break;
                case TYPEMULTIPART:
                    $mime_type = "multipart";
                    // Hey, why not use this function to deal with all the parts
                    // of this multipart part :)
                    for ($i = 0; $i < count($this_part->parts); $i++) {
                        if ($part_no != "") {
                            $part_no = $part_no.".";
                        }
                        for ($i = 0; $i < count($this_part->parts); $i++) {
                            DisectThisPart($this_part->parts[$i], $part_no.($i + 1));
                        }
                    }
                    break;
                case TYPEMESSAGE:
                    $mime_type = "message";
                    break;
                case TYPEAPPLICATION:
                    $mime_type = "application";
                    break;
                case TYPEAUDIO:
                    $mime_type = "audio";
                    break;
                case TYPEIMAGE:
                    $mime_type = "image";
                    break;
                case TYPEVIDEO:
                    $mime_type = "video";
                    break;
                case TYPEMODEL:
                    $mime_type = "model";
                    break;
                default:
                    $mime_type = "unknown";
                    // hmmm....
                }
                $full_mime_type = $mime_type."/".$obj->subtype;

                // Decide what you what to do with this part
                // If you want to show it, figure out the encoding and echo away
                switch ($this_part->encoding) {
                case ENCBASE64:
                    // use imap_base64 to decode
                    break;
                case ENCQUOTEDPRINTABLE:
                    // use imap_qprint to decode
                    break;
                case ENCOTHER:
                    // not sure if this needs decoding at all
                    break;
                default:
                    // it is either not encoded or we don't know about it
                }




                echo "<div>".$full_mime_type."</div>" ;



    if ($obj->type == TYPEMESSAGE)
        {
        parse_message($obj->parts[0], $partno.".");
        }
    elseif (sizeof($obj->parts) > 0)
        {
        foreach ($obj->parts as $count=>$p)
            parse_part($p, $partno.".".($count+1));
        }
    else
        {

        };
    }
    ;



function mime_decode($s)
    {
    $elements = imap_mime_header_decode($s);
    for($i = 0;$i < count($elements);$i++)
        {
        $charset = $elements[$i]->charset;
        $text =$elements[$i]->text;
        if(!strcasecmp($charset, "utf-8") || !strcasecmp($charset, "utf-7"))
            {
            $text = iconv($charset, "iso-8859-1", $text);
            }
        $decoded = $decoded . $text;
        }
        //echo $s.$decoded;
    return $decoded;
    }






if ($compte=="")
    {
    for ($i=0;$i<count($comptenom);$i++)
        {
        echo "<a href='$PHP_SELF?compte=$i' accesskey=\"".($i+1)."\">".im_emoji(166+$i)." ".$comptenom[$i]."</a><br>\n";
        };
    };


if ($compte!="")
    {

    echo "<b><a href='$PHP_SELF?compte=$compte' accesskey=\"0\">".im_emoji(59115)."</a>".$comptenom[$compte]."</b> ";
    echo "<a href='$PHP_SELF' accesskey=\"*\">".im_emoji(58979)."</a>Home*<br>";
    echo im_emoji(59138)."<a href='$PHP_SELF?compte=$compte&expunge=1'>Vider corbeille</a><br>";

    $chaineconnexion= "{".$serveur[$compte].":".$port[$type[$compte]].(($type[$compte]=="pop")?"/pop3":"")."}";
    //echo $chaineconnexion;
    $mbox = imap_open ($chaineconnexion, $login[$compte], $pass[$compte]);

    if ($no)
        {
        $header=imap_headerinfo($mbox, $no);

        $from = $header->from;
        $subject = $header->subject;
        $subject = mime_decode($subject);
        $dateheure=date("j/n/Y H:i:s",$header->udate);

        echo "<p align=center>$subject<br>";
        echo "de:".mime_decode($from[0]->personal)." [".$from[0]->mailbox."@".$from[0]->host."]<br>";
        echo "$dateheure<br>
        ".im_emoji(59138)."<a href=\"$PHP_SELF?compte=$compte&securite=".$header->udate."&delete=$no\">Effacer</a>]
</p>";

        //$text = imap_fetchbody($mbox, $no, 1);
        //echo $text;

        $contenuhtml = get_part($mbox, $no, "TEXT/HTML");
        $contenutxt = get_part($mbox, $no, "TEXT/PLAIN");
        if (trim($contenutxt)!=""){echo nl2br(htmlentities($contenutxt));}else {echo $contenuhtml;}   ;
        echo "<hr>";
        //parse_message(imap_fetchstructure($mbox,$no));
        };

    if ($delete)
        {
        $header=imap_headerinfo($mbox, $delete);
        if ($securite!=($header->udate)) die("Erreur !!!!");
        //echo "Message de:".$from[0]->personal." [".$from[0]->mailbox."@".$from[0]->host."]<br>";
        $resu = imap_delete($mbox, $delete) or die("probleme");
        if ($type[$compte]=="pop") $resu = imap_expunge($mbox) or die("probleme vider corbeille pop");

        };

    if ($expunge)
        {
        $resu = imap_expunge($mbox) or die("probleme");
        };


    if (!$no)
        {
        $headers = imap_headers ($mbox);
        echo "<p>".count($headers)." mails";

        if ($headers == false)
            {
            echo "Erreur !\n";
            }
        else
            {
            //echo "<table>";
            $sortie="";
            while (list ($key,$val) = each ($headers))
                {
                $h=imap_headerinfo($mbox, $key+1);
                $sujet=mime_decode($h->subject);
                if (eregi("^.{21}",$sujet)) $sujet=eregi_replace("^(.{18}).*$","\\1...",$sujet);
                $from=$h->from; $from2=$from[0]->personal ;//." (".$from[0]->mailbox."@".$from[0]->host.")".$from[0]->adl;
                $from2=mime_decode($from2);
                $to=$h->to; $to2=$to[0]->personal." (".$to[0]->mailbox."@".$to[0]->host.")";
                $deleted=($h->Deleted=="D");
                $unseen=(Unseen == 'U' || Recent == 'N');
                if (date("j/n/Y",$h->udate)==date("j/n/Y") )
                    { $date=date("H:i:s",$h->udate); }
                else
                    { $date=date("j/n/Y H:i:s",$h->udate); };

                if (!$deleted)
                $sortie ="<p><a href=\"$PHP_SELF?compte=$compte&no=".($key+1)."\" accesskey=\"".($key+1)."\">"
                    .im_emoji(166+$key)."</a> "
                    .($deleted?"Effacé!<br>":"")
                    ."$from2 "
                    ."$date<br>"
                    ."$sujet<br>"
                    ."<a href=\"$PHP_SELF?compte=$compte&securite=".$h->udate."&delete=".($key+1)."\">Eff.</a>"
                    .$sortie
                    ;
                }
            echo $sortie;
            };
        };
    imap_close($mbox);
    };

?>
</body>
</html>
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 04 Avr 2008 17:50

Bonjour,

Juste pour correction au début de ton script, le port ssl imap est 993, pas 143 (imap seul)
Par contre la connexion en pop sur SME 7 n'est plus possible depuis l'extérieur (pas de pop pour moi) du pops plutôt ?!

Pabze :wink:

PS : Peux tu nous donner la marche à suivre pour ton script ? Ou le mettre, les variables à modifier... Si on peut faire des tests ? non ?
L'or c'est bien, les platines c'est mieux.
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 04 Avr 2008 18:24

Pabze a écrit:Bonjour,

Juste pour correction au début de ton script, le port ssl imap est 993, pas 143 (imap seul)
Par contre la connexion en pop sur SME 7 n'est plus possible depuis l'extérieur (pas de pop pour moi) du pops plutôt ?!

Pabze :wink:

PS : Peux tu nous donner la marche à suivre pour ton script ? Ou le mettre, les variables à modifier... Si on peut faire des tests ? non ?


pas de probleme au contraire...

Voila le zip de tout le programme.
Tu mets le tout dans un répertoire sur ton serveur SME..

Modifie les parametres de ton/tes comptes pop/imap dans le fichier mail.php
ensuite tu lances le fichier mail.php depuis ton SME via IE... ou depuis ton GSM...

Si tu as des questions...

http://toussus.free.fr/email-gsm.zip

Cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar jcp » 08 Avr 2008 16:37

Bonjour,

Quelqu'un a pu voir d'ou venais mon problème ? j'ai mis les sources en dispo....

en plus si vous avez un gsm qui permet l'acces a internet, c'est aussi tres interessant pour vous :-)

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 09 Avr 2008 08:59

Bonjour,

Merci pour les sources, mais je n'ai pas encore trouvé le temps de le mettre en place.
Je fais ça en fin de semaine, et je reviens vers toi, pour te faire un retour.

Pabze :wink:
L'or c'est bien, les platines c'est mieux.
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 10 Avr 2008 07:17

OK merci, j'attends avec impatience ton retour :-)

Cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité