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

Shell et commandes GNU Discussion :

Envoi Zip par mail


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut Envoi Zip par mail
    Bonjour,

    N'étant pas super doué sur unix, je vous demande votre aide.

    J'ai un problème au niveau de l'envoi de mail vers outlook. Je m'explique :

    j'ai un fichier Texte de 50Mo que je dois envoyer par mail (dans une pièce jointe car d'autres personnes doivent l'exploiter). N'étant pas acceptable ni possible d'envoyer 50 Mo par mail, je le compresse via la commande zip.

    Lorsque mon zip est réalisé, je souhaite l'envoyer de ma manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /usr/lib/sendmail $TO << _FINI_
    From: $FROM
    To: $TO
    Cc: $CC
    Subject: $SUBJECT
    MIME-Version: 1.0
    Content-Type: application/zip; name="$FILE_DEST"
    
    _FINI_
    Je reçoit bien mon mail avec la pièce jointe qui ne fais plus de 3Mo grâce à la compression. Le soucis est que l'archive est vide (malgré ses 3Mo). Il doit être interprété comme un texte brut (pas le texte d'origine).

    Le problème est que cette portion de code fonctionne lorsque j'envoie des .CSV (avec la modification au niveau du Content-Type qui devient un octet-stream).

    Donc pour trouver une solution j'ai pas mal cherché sur internet et j'ai rien trouvé de semblable à mon truc. Je pense que le problème provient du Content-Type car sous UNIX mon Zip fonctionne bien... je peux le dézipper, le rezipper...

    J'ai essayé de le passer en gzip, en zip, en tar + gzip (avec les modifications qu'il faut au niveau du Content-Type) mais rien n'y fait.
    J'ai changé le Content-Type en application/zip, en multipart/x-zip (je reçoit plein de fichier ATT...txt contenant le texte brut), en application/octet-stream mais tout rien de bon.

    Auriez-vous une solution à mon problème ????

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Voici une entête de mail après envoi d'un fichier joint (zip) via thunderbird.
    Si ça peut aider.

    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
     
    From: Prenom Nom <prenom.nom@exemple.com>
    MIME-Version: 1.0
    To: destinataire@exemple.com
    Subject: Test ZIP
    Content-Type: multipart/mixed;
     boundary="------------000605050506010000060208"
     
    This is a multi-part message in MIME format.
    --------------000605050506010000060208
    Content-Type: text/plain; charset=ISO-8859-1; format=flowed
    Content-Transfer-Encoding: 7bit
     
     
    --------------000605050506010000060208
    Content-Type: application/zip;
     name="foobar.zip"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
     filename="foobar.zip"
     
    UEsoAAAAAAHRDWTtT/FFnAgAAAAIAAAAKABUAZm9vYmFyL[...]
    --------------000605050506010000060208--

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Il me semble que pour envoyer des pièces jointes depuis le shell, il faut utiliser uuencode, alors j'ai Googleé, et cela m'a retourné un lien sur ce forum
    ...
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par superglier Voir le message
    Bonjour,

    N'étant pas super doué sur unix, je vous demande votre aide.

    J'ai un problème au niveau de l'envoi de mail vers outlook. Je m'explique :

    j'ai un fichier Texte de 50Mo que je dois envoyer par mail (dans une pièce jointe car d'autres personnes doivent l'exploiter). N'étant pas acceptable ni possible d'envoyer 50 Mo par mail, je le compresse via la commande zip.

    Lorsque mon zip est réalisé, je souhaite l'envoyer de ma manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /usr/lib/sendmail $TO << _FINI_
    From: $FROM
    To: $TO
    Cc: $CC
    Subject: $SUBJECT
    MIME-Version: 1.0
    Content-Type: application/zip; name="$FILE_DEST"
    
    _FINI_
    sendmail ne lit pas le $FILE_DEST pour vous afin de l'ajouter au mail !
    vous devez absolument mettre le contenu du fichier dans le "texte" du mail…
    or comme on ne peut pas mettre de données binaires, le dit contenu doit être uuencodé…

    (et $SUBJECT devrait être encodé selon RFC2047…)

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Merci de votre aide,

    Je vais essayé la solution de ericduval demain. Pour ce qui est de l'uuencode, j'avais un code qui fonctionnait pour les tar et qui utilisait le uuencode mais ça ne fonctionne pas pour le zip (le même morceau de code - en changeant naturellement le Content-type) ... après peut être que mon code ne s'adaptait mal à ça ...

    Pour l'histoire de la variable qui n'ai pas prise, je regarderais ça, mais j'avais essayé avec un cat $FILE_DEST | sendmail... mais je réessayerais.

    Merci beaucoup. Je repasserais demain pour vous dire !

  6. #6
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Bon ben voila un début de quelque chose (un peu baclé) mais c'est une piste

    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
     
    #!/bin/sh
     
    if [ $# -ne 5 ]
    then
            echo "Usage : $0 <TO> <FROM> <CC> <SUBJECT> <FILE_DEST>"
            exit 1
    fi
     
    TO=$1
    FROM=$2
    CC=$3
    SUBJECT=$4
    FILE_DEST=$5
     
     
    /usr/lib/sendmail $TO << _FINI_
    From: $FROM
    MIME-Version: 1.0
    To: $TO
    Cc: $CC
    Subject: $SUBJECT
    Content-Type: application/zip;
     name="`basename $FILE_DEST`"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
     filename="`basename $FILE_DEST`"
     
    `/usr/bin/base64 $FILE_DEST`
    _FINI_
     
    exit 0

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    NB

    si votre distrib ne fournit pas /usr/bin/base64…

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Oui JeitEmgie,

    Mais comment tu intègres le uuencode -m dans la partie dédiée à l'envoi ??

    car uuencode prend deux fichiers, l'initial et celui de sortie non ?

    Merci d'avance.

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par superglier Voir le message
    Oui JeitEmgie,

    Mais comment tu intègres le uuencode -m dans la partie dédiée à l'envoi ??

    car uuencode prend deux fichiers, l'initial et celui de sortie non ?

    Merci d'avance.
    non… 2 paramètres… pas 2 fichiers…
    le 1er est le PATH_TO_FILE_TO_ENCODE et le 2ème est le nom qui sera placé dans l'entête base64
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin-base64 755 NAME_AS_SPECIFIED_BY_SECOND_PARAM
    …
    ====

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Le uuencode -m et le /usr/bin/base64 ne sont pas reconnu... c'est moins cool déjà...

    Mais par rapport au code de ericduval, comment et ou écrire le uuencode avec ces deux paramètre (le fichier en encode et l'autre) ???

    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
    #!/bin/sh
    
    if [ $# -ne 5 ]
    then
            echo "Usage : $0 <TO> <FROM> <CC> <SUBJECT> <FILE_DEST>"
            exit 1
    fi
    
    TO=$1
    FROM=$2
    CC=$3
    SUBJECT=$4
    FILE_DEST=$5
    
    
    /usr/lib/sendmail $TO << _FINI_
    From: $FROM
    MIME-Version: 1.0
    To: $TO
    Cc: $CC
    Subject: $SUBJECT
    Content-Type: application/zip;
     name="`basename $FILE_DEST`"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
     filename="`basename $FILE_DEST`"
    
    `/usr/bin/base64 $FILE_DEST`
    _FINI_
    
    exit 0
    Question supplémentaire :

    Lorsque je recevrais mon mail avec le zip à l'intérieur sur mon PC Windows, je dois faire un truc pour le décoder ???


    Merci de votre aide !!

  11. #11
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Bonjour,

    Tu es sur quel système et quel distribution ?

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    SunOS

  13. #13
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Tu aussi peux utiliser :

    openssl enc -base64 -in fichier.in -out fichier.out

    Cette commande remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    `/usr/bin/base64 $FILE_DEST`
    _FINI_
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    `/usr/bin/openssl enc -base64 -in $FILE_DEST`
    _FINI_
    Tu peux aussi installer la commande uuencode ou/et base64 ou/et openssl.

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

Discussions similaires

  1. envoi état par mail : conversion pdf aléatoire
    Par stagolee dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/02/2016, 16h36
  2. Bouton Envois PDF par Mail
    Par joebar0212 dans le forum 4D
    Réponses: 3
    Dernier message: 12/02/2009, 07h36
  3. problème envoi pdf par mail
    Par ver_for dans le forum IHM
    Réponses: 4
    Dernier message: 01/06/2008, 09h18
  4. envoi PDF par mail
    Par the_6L20 dans le forum Access
    Réponses: 13
    Dernier message: 26/02/2007, 14h52
  5. [Mail] Problème envoi formulaire par mail
    Par Nicos77 dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2005, 17h11

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