Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Perl MIME::Lite piece jointe txt n'apparait pas avec body HTML + images imbriquées

3 réponses
Avatar
jpc
Bonjour,

Je cherche =E0 envoyer un email HTML avec images imbriqu=E9es avec
MIME::Lite et avec une pi=E8ce jointe au format .txt
Tout marche mais la pi=E9ce jointe au format n'apparait pas =E0 cause de
Type =3D>'multipart/related'

qq a-t-il une solution ?


code :

#############################################

#!/usr/bin/perl
use MIME::Lite;
use strict;


$msg =3D MIME::Lite->new(
From =3D>'xxxx@orange.fr',
To =3D>'xxxxx@orange.fr',
Subject =3D>'Envoi de l\'email via Perl!',
Type =3D>'multipart/related',
);




$msg->attr("content-type.charset" =3D> "iso-8859-1");


$msg->attach(Type =3D> 'text/html',
Data =3D> qq{

<body>
<BR>
<img src=3D"cid:header.jpg">
<BR>

<div style=3D"width: 660px; font-family: Verdana; font-size:
11px; padding: 20px 10px 20px 10px;">
<div style=3D"margin-left: 30px; margin-right: 60px;">
<div style=3D'font-family: Verdana; font-size: 12px; font-weight:
bold; color: #628ED3; padding: 10px 0px 15px 0px; margin: 10px 0px
5px
0px; border-bottom: 1px solid #628ED3;'>BackUp test test
XXX</div><div style=3D'font-family: Verdana; font-size: 10px; padding:
0px
0px 15px 0px; margin: 0px 0px 5px 0px; border-bottom: 1px solid
#628ED3;'>BackUp ok voir le document joint.</div>

<BR>
<img src=3D"cid:footer.jpg">
<BR>
</body>

}


);


$msg->attach
(
Type =3D> 'image/jpg',
Id =3D>'footer.jpg',
Path =3D> 'footer.jpg'
);

$msg->attach(
Type =3D> 'image/jpg',
Id =3D> 'header.jpg',
Path =3D> 'header.jpg'
);


# piece jointe au format txt
$msg->attach(Type =3D> 'application/txt',
Path =3D> 'BackUp_Database.log',
Filename =3D> 'BackUp_Database.log',
);



$msg->send('smtp', 'xxx.xxx.xx.xx');

#########################################


Merci,

JPC

3 réponses

Avatar
Paul Gaborit
À (at) Thu, 3 Mar 2011 06:12:02 -0800 (PST),
jpc écrivait (wrote):

Bonjour,

Je cherche à envoyer un email HTML avec images imbriquées avec
MIME::Lite et avec une pièce jointe au format .txt
Tout marche mais la piéce jointe au format n'apparait pas à cause de
Type =>'multipart/related'

qq a-t-il une solution ?



À première vue, et sans vérification, je pense qu'il faut imbriquer deux
niveaux : du multipart/mixed au niveau le plus haut avec une première
partie contenant la pièce jointe et une deuxième partie qui sera du
multipart/related (c'est là qu'est l'imbrication) contenant elle-même le
HTML et ses images.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/&gt;
Perl en français - <http://perl.mines-albi.fr/&gt;
Avatar
Freddy Dissaux
Le Thu, 03 Mar 2011 16:22:24 +0100, Paul écrivait:

À (at) Thu, 3 Mar 2011 06:12:02 -0800 (PST),
jpc écrivait (wrote):

Bonjour,

Je cherche à envoyer un email HTML avec images imbriquées avec
MIME::Lite et avec une pièce jointe au format .txt
Tout marche mais la piéce jointe au format n'apparait pas à cause de
Type =>'multipart/related'

qq a-t-il une solution ?





Utiliser Email::MIME::CreateHTML + Template ?

Je peux envoyer un exemple au besoin.

--
freddy <point> dsx <arobase> free <point> fr
Avatar
jpc
On 3 mar, 17:36, Freddy Dissaux
wrote:
Le Thu, 03 Mar 2011 16:22:24 +0100, Paul crivait:



> (at) Thu, 3 Mar 2011 06:12:02 -0800 (PST),
> jpc crivait (wrote):

>> Bonjour,

>> Je cherche envoyer un email HTML avec images imbriqu es  avec
>> MIME::Lite  et avec une pi ce jointe au format .txt
>> Tout marche mais la pi ce jointe au format n'apparait pas cause de
>> Type =>'multipart/related'

>> qq a-t-il une solution ?

Utiliser Email::MIME::CreateHTML + Template ?

Je peux envoyer un exemple au besoin.

--
freddy <point> dsx <arobase> free <point> fr



##############################################

Ok,
Merci Freddy pour de ta réponse.
Je suis intéressé par l'exemple merci de me l'envoyer.

__________________________________________________

Suite à la 1ere réponse de Paul Gaborit, j'ai fait une recherche sur
le Net , obtenu une piste :

http://www.perlmonks.org/?node_id5240

Et trouvé une solution.

Voici le code qui fonctionne
########################################################

#!/usr/bin/perl
use MIME::Lite;
use strict;


my $msg = MIME::Lite->new(
From =>'',
To =>'',
Subject =>'Envoi de l'email via Perl!',
Type =>'multipart/mixed',
);




#$msg->attr("content-type.charset" => "iso-8859-1");


my $body = MIME::Lite->new (
Type =>'multipart/related',
);

$body->attach(Type => 'text/html',
Data => qq{

<body>
<BR>
<img src="cid:header.jpg">
<BR>

<div style="width: 660px; font-family: Verdana; font-size:
11px; padding: 20px 10px 20px 10px;">
<div style="margin-left: 30px; margin-right: 60px;">
<div style='font-family: Verdana; font-size: 12px; font-weight:
bold; color: #628ED3; padding: 10px 0px 15px 0px; margin: 10px 0px
5px
0px; border-bottom: 1px solid #628ED3;'>BackUp test test
XXX</div><div style='font-family: Verdana; font-size: 10px; padding:
0px
0px 15px 0px; margin: 0px 0px 5px 0px; border-bottom: 1px solid
#628ED3;'>BackUp ok voir le document joint.</div>

<BR>
<img src="cid:footer.jpg">
<BR>
</body>

}


);


$body->attach
(
Type => 'image/jpg',
Id =>'footer.jpg',
Path => 'footer.jpg'
);

$body->attach(
Type => 'image/jpg',
Id => 'header.jpg',
Path => 'header.jpg'
);


# Attach the "body" part to the original message

$msg->attach($body);

# piece jointe au format txt
$msg->attach(Type => 'application/txt',
Path => 'BackUp_Database.log',
Filename => 'BackUp_Database.log',
);



$msg->send('smtp', 'xxx.xxx.xx.xx')