IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

uploader une image sur son serveur en l'envoyant à un mail donné


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut uploader une image sur son serveur en l'envoyant à un mail donné
    Bonjour,
    Je cherche à envoyer une image sur mon serveur tout simplement en envoyant cette image à une adresse mail donnée
    reliée à mon nom de domaine.
    Cette image irait toujours au même endroit.

    Apparemment ce qui se fait et ce que j'ai trouvé, c'est d'envoyer un mail donné et ... un cron régulier sur le serveur prendrait l'image attachée pour la transférer au bon endroit ...
    ... mais techniquement je manque de connaissances/billes pour faire cette partie !?

    Bref le + simple sera le mieux

    Un peu d'aide ou piste pour démarrer serait bienvenu

    Merci d'avance

    Laurent
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  2. #2
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Si j'ai bien compris ce que tu expliques, pourquoi ne pas créer une page pour l'upload de ton image qui ferait ce traitement ?


    Ou alors, regarde du côté des fonctions IMAP de PHP.

    https://www.php.net/manual/fr/ref.imap.php

  3. #3
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Merci pour ta réponse,
    J'utilise déjà ce type de fonctionnalité avec un plugin wordpress pour poster un nouvel article, je mets dans ma messagerie, une adresse mail spécifique, un titre et ce que je veux dans le corps du message et cet article apparaît sur le blog direct.

    Par mail, ça me parait vraiment très pratique au quotidien et c'est ça que je recherche.
    Je vais regarder ton lien et je reviens ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    imap est bien la solution au problème.
    En gros ton serveur php va à intervalle régulier lire les mails non lu et en extrait le contenu.
    Il faudra surement formaliser un peu les mails pour ne pas lire des spam par exemple , décider si ton images est embedded ou en pièce jointe (surement plus simple).

    Par contre c'est beaucoup de boulot par rapport à un simple formulaire d'upload.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par grunk Voir le message
    imap est bien la solution au problème.
    En gros ton serveur php va à intervalle régulier lire les mails non lu et en extrait le contenu.
    Il faudra surement formaliser un peu les mails pour ne pas lire des spam par exemple , décider si ton images est embedded ou en pièce jointe (surement plus simple).

    Par contre c'est beaucoup de boulot par rapport à un simple formulaire d'upload.
    Oui ça demande + de boulot mais d'un autre coté, ça sera aussi formateur, l'image sera en pièce jointe ... le traitement finalisé me prendra l'images (2-3 Mo) et me réduira l'images avec 300/400 px max sur la largeur ou hauteur et permettra de dynamiser un petit site ... par exemple.
    Si ça fonctionne bien je pourrais sans doute récupérer l'objet et le texte du mail ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bon voilà ce que j'ai trouvé adapté et fait et qui marche pour moi ...
    C'est du brut de fonderie car je vais l'utiliser pour un petit site sans prétention ...
    J'ai donc au préalable créer une boite mail "spécial" qui ne sert qu'à acheminer une image dans un répertoire donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     
     
    set_time_limit(3000); 
     
    $hostname="{mail.mondomaine.org:143/novalidate-cert}INBOX"; // voir http://fr.php.net/imap_open
    $username="maboitemail@mondomaine.org"; //imap login
    $password="aloevera"; //imap password
    $folder = "/home/.../monrep";
    set_time_limit(3000); 
     
     
    /* try to connect */
    $inbox = imap_open($hostname,$username,$password) or die('Cannot connect : ' . imap_last_error());
    $emails = imap_search($inbox, 'UNSEEN');
    /* if any emails found, iterate through each email */
    echo 'depart';    
     
    if($emails) {
     
        $count = 1;
     
        /* put the newest emails on top */
        rsort($emails);
     
        /* for every email... */
        foreach($emails as $email_number) 
        {
     
            /* get information specific to this email */
            $overview = imap_fetch_overview($inbox,$email_number,0);
     
            $message = imap_fetchbody($inbox,$email_number,2);
     
            /* get mail structure */
            $structure = imap_fetchstructure($inbox, $email_number);
     
            $attachments = array();
     
            /* if any attachments found... */
            if(isset($structure->parts) && count($structure->parts)) 
            {
                for($i = 0; $i < count($structure->parts); $i++) 
                {   $attachments[$i] = array(
                        'is_attachment' => false,
                        'filename' => '',
                        'name' => '',
                        'attachment' => ''
                    );
     
                    if($structure->parts[$i]->ifdparameters) 
                    {
                        foreach($structure->parts[$i]->dparameters as $object) 
                        {
                            if(strtolower($object->attribute) == 'filename') 
                            {
                                $attachments[$i]['is_attachment'] = true;
                                $attachments[$i]['filename'] = $object->value;
                            }
                        }
                    }
     
                    if($structure->parts[$i]->ifparameters) 
                    {
                        foreach($structure->parts[$i]->parameters as $object) 
                        {
                            if(strtolower($object->attribute) == 'name') 
                            {
                                $attachments[$i]['is_attachment'] = true;
                                $attachments[$i]['name'] = $object->value;
                            }
                        }
                    }
     
                    if($attachments[$i]['is_attachment']) 
                    {
                        $attachments[$i]['attachment'] = imap_fetchbody($inbox, $email_number, $i+1);
     
                        /* 3 = BASE64 encoding */
                        if($structure->parts[$i]->encoding == 3) 
                        { 
                            $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
                        }
                        /* 4 = QUOTED-PRINTABLE encoding */
                        elseif($structure->parts[$i]->encoding == 4) 
                        { 
                            $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
                        }
                    }
                }
            }
     
            /* iterate through each attachment and save it */
            foreach($attachments as $attachment)
            {
                if($attachment['is_attachment'] == 1)
                {
                    $filename = $attachment['name'];
                    if(empty($filename)) $filename = $attachment['filename'];
                    if(empty($filename)) $filename = time() . ".dat";
                    $ext = pathinfo($filename, PATHINFO_EXTENSION);
                    if (($ext == "jpg") or ($ext == "JPG")) {
                        $fp = fopen($folder ."/". "monnomimage.jpg", "w+");
                        fwrite($fp, $attachment['attachment']);
                        fclose($fp);
                        $imagesize = getimagesize($folder ."/". "monnomimage.jpg");
                        $width_orig = $imagesize[0];
                        $height_orig = $imagesize[1];
     
                        $dst_w = 600;
     
                        if($width_orig != $dst_w){
     
                            $dst_h_multiplier = $dst_w / $width_orig;
                            $dst_h = $dst_h_multiplier * $height_orig;
     
                            $dst = imagecreatetruecolor($dst_w, $dst_h);
                            $image = imagecreatefromjpeg($folder ."/". "monnomimage.jpg");
                            imagecopyresampled($dst, $image, 0, 0, 0, 0, $dst_w, $dst_h ,$width_orig, $height_orig);
     
                            imagejpeg($dst,$folder ."/". "monnomimagecompress.jpg",80);
                        }            
     
                    }            
                }
            }
        }
     
    } 
     
    /* close the connection */
    imap_close($inbox, CL_EXPUNGE);
     
    echo "all attachment Downloaded";
    Mes remarques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $hostname="{mail.mondomaine.org:143/novalidate-cert}INBOX"; // voir http://fr.php.net/imap_open
    si je ne mets pas novalidate-cert alors je n'arrive pas à parcourir ma boite mail ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $emails = imap_search($inbox, 'UNSEEN');
    Le UNSEEN c'est pour récupérer la/les dernières images mais je ne vais en garder qu'UNE ... (écrasement successif si on envoie 3 mails à la suite)

    Ce bout de code sert à prendre la pièce jointe si c'est une image (jpg) et qui a été renommée alors en monnomimage.jpg ...
    ... la réduire à la taille de 600 * ... (respect des proportions) puis de la renommer avec le nom définitif de l'image que j'utilise sur ma page web ...
    (... et la compresser au passage avec une qualité de 80%)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $imagesize = getimagesize($folder ."/". "monnomimage.jpg");
                        $width_orig = $imagesize[0];
                        $height_orig = $imagesize[1];
     
                        $dst_w = 600;
     
                        if($width_orig != $dst_w){
     
                            $dst_h_multiplier = $dst_w / $width_orig;
                            $dst_h = $dst_h_multiplier * $height_orig;
     
                            $dst = imagecreatetruecolor($dst_w, $dst_h);
                            $image = imagecreatefromjpeg($folder ."/". "monnomimage.jpg");
                            imagecopyresampled($dst, $image, 0, 0, 0, 0, $dst_w, $dst_h ,$width_orig, $height_orig);
     
                            imagejpeg($dst,$folder ."/". "monnomimagecompress.jpg",80);
    Ensuite j'ai paramétré un cron sur mon serveur mutualisé qui lance le php toute les x minutes et ça a l'air de fonctionner.


    Le but était je le répète de "dynamiser" une page web sans se prendre la tête, tu indiques un mail particulier, tu joins une images et HOP ?
    Autre utilité , il est plus facile/discret au boulot d'envoyer une image à une adresse mail externe que de se connecter à un site particulier en utilisant un formulaire (mais je peux me tromper sur la discrétion )
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    il est plus facile/discret au boulot d'envoyer une image à une adresse mail externe
    Dans ce cas là prend soin de marque ton email comme personnel (genre avec un [Perso] dans le titre). Sinon c'est considéré comme du travail et peut être lu et potentiellement retenu contre toi.
    Au contraire une correspondance perso , n'a pas le droit d'être lue. Il est difficile de reprocher une utilisation personnel des email si ca reste raisonnable.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par grunk Voir le message
    Dans ce cas là prend soin de marque ton email comme personnel (genre avec un [Perso] dans le titre). Sinon c'est considéré comme du travail et peut être lu et potentiellement retenu contre toi.
    Au contraire une correspondance perso , n'a pas le droit d'être lue. Il est difficile de reprocher une utilisation personnel des email si ca reste raisonnable.
    Merci Grunk,
    De toute façon un rappel ça ne fait jamais de mal ! et on va oublier cette proposition de ma part "malhonnête"

    En fait je parlais pour les autres éventuellement, .... comme je suis passé en SSII par Banque, Assurance etc. je ne me suis jamais considéré comme "chez moi" et donc j'ai toujours été en mode boulot au boulot (normal on pourrait dire mais des fois on est dans un environnement faux-jeton sans le réaliser, je dis pas ça méchamment mais faut pas être con aussi ... des qu'il y a des histoire de sous et de contrat c'est ainsi) ... et encore aujourd'hui en interne je ne blague pas avec la frontière boulot/privé.

    Parfois on ne se rend pas compte de toutes la masse d'informations qu'on a sur soi dans sa boite, le pointage, les mails, etc. bref quand on veut planter quelqu'un : ON LE PLANTE
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Uploader une image sur le serveur du site
    Par Pecose dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/07/2019, 10h30
  2. upload une image sur le serveur
    Par S_ami dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/09/2010, 08h56
  3. Comment uploader une image sur son propre serveur avec l'éditeur nicedit ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/04/2009, 13h01
  4. [Upload] Uploader une image sur serveur
    Par josémaria dans le forum Langage
    Réponses: 17
    Dernier message: 30/10/2006, 22h11
  5. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 20h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo