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 Perl Discussion :

Encodage pour un email à destination d'Outlook et saut de lignes dans ce même email


Sujet :

Langage Perl

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 138
    Par défaut Encodage pour un email à destination d'Outlook et saut de lignes dans ce même email
    Bonjour,

    je développe sur une plateforme RHEL6.6 un programme Perl (vs 5.10.1) susceptible d'envoyer des emails vers un serveur Exchange qui seront lus avec un client Outlook 2010.
    Pour gérer l'aspect encodage, j'ai consulté https://perl.developpez.com/tutoriel...ge-caracteres/.

    Le script n'utilise pas le pragma use utf8
    Pour que les caractères s'affichent correctement dans Outlook, j'ai créé la fonction outlook_encode appelée par la fonction send_mail.

    Le résultat est correct mais je me demande si c'est la bonne façon de procéder car je ne suis pas très à l'aise lorsqu'il s'agit de manipuler les encodages ;)
    J'avais essayé dans un premier temps d'utiliser sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg->attr('content-type.charset' => 'CP1252');
    Par la même occasion, un peu off-topic de ma précédente question, mais je n'arrive pas à obtenir dans le mail le saut de ligne entre les deux derniers éléments du tableau @t_str alors que les boucles foreach qui parcourent les tableaux de données pointées par les références fonctionnent. Voir l'image jointe, la ligne après 'Statut changé pour entrées oratab' devrait présenter un saut de ligne avant le mot 'sinon'.

    Merci pour vos avis et commentaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub outlook_encode {
        my ( $string ) = @_;
        return encode ( 'CP1252', (decode ('UTF-8', $string ))  );
    }
    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
    sub send_mail {
        my ( $r_log, $r_h_env, $r_t_new ,$r_t_del, $r_t_chg ) = @_;
     
        my $to   = 'xxx@yyy';
        my $cc   = 'xxx@yyy, xxx@yyy';
        my $from = 'xxx@yyy';
     
        my $subject = 'Action Production - Interventions ODA';
        my $message;
     
        if ( scalar(@$r_t_new) > 0 ) {
            my $str   = 'Nouvelles entrées oratab => Créer traitements VTOM de sauvegardes';
            $message .= outlook_encode ( $str ) . "\n" . $r_h_env->{'dash132'} . "\n" ;
            $message .= outlook_encode ( $_ ) . "\n" foreach @$r_t_new;
            $message .= "\n";
        }
     
        if ( scalar(@$r_t_del) > 0 ) {
            my $str   = 'Entrées oratab manquantes => Désactiver ou supprimer traitements VTOM correspondants';
            $message .= outlook_encode ( $str ) . "\n" . $r_h_env->{'dash132'} . "\n" ;
            $message .= outlook_encode ( $_ ) . "\n" foreach @$r_t_del;
            $message .= "\n";
        }
     
        if ( scalar(@$r_t_chg) > 0 ) {
     
            my @t_str = ( 'Statut changé pour entrées oratab' ,
                          'Si fin du nouveau primaire se termine par ORA0 alors dans VTOM switcher les machines physiques des machines logiques PPMLORA01 et PS1LORA01, ' ,
                          'sinon si fin du nouveau primaire se termine par ORA1 alors dans VTOM switcher les machines physiques des machines logiques BPMLORA01 et BS1LORA01' );
     
            $message .= outlook_encode ( $_ ) . "\n" foreach @t_str;
            $message .= $r_h_env->{'dash132'} . "\n" ;
     
            $message .= outlook_encode ( $_ ) . "\n" foreach @$r_t_chg;
            $message .= "\n";
        }
     
        my $msg = MIME::Lite->new(
            From     => $from,
            To       => $to,
            Cc       => $cc,
            Subject  => $subject,
            Type     => 'multipart/mixed'
        );
     
        $msg->attach(Type => 'text',
                     Data => $message,
        );
     
    #    $msg->attr('content-type.charset' => 'CP1252');
     
        $msg->send;
     
    }
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/05/2010, 17h58
  2. Envoie de deux formulaires dans le même email.
    Par michab18 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/10/2009, 22h41
  3. Saut de ligne dans une chaine externe pour caption d'un TLabel
    Par fred64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 08/09/2006, 14h13
  4. [VB] Probleme pour recuperer pieces jointes d'outlook
    Par eown dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/04/2006, 09h26
  5. Réponses: 3
    Dernier message: 01/08/2005, 12h15

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