Socket mail avec fichier joint

_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 - 8 sept. 2006 à 16:57
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 - 2 oct. 2006 à 07:06
Salut à toi qui lit

bon j'ai un p'tit prob et p'etre que quelqu'un pourra me dire ma bétise, moi ca fait 3 jours et j'arrive pas a trouvé le truc :(
donc voilà, l'idée c que je souhaite envoyé un mail via socket, en html & avec un fichier joint.
mon prob c que des que je modif ma sources avec des frontieres (boundary) et différent content type pour les diff partie, ben j'ai un sale vilain truc qui arrive dans outlook.
bien voilà mon code qui envois :

<?
$servermail  = "mail.kolapsis.net";
$nl = "
";

$html = "<html>Bonjour #prenom#
Comment allez vous ?</html>";
$html = str_replace("#prenom#","Benjy",$html);

$from    = "Mailler <mailler@kolapsis.net>";
$to      = "Benjamin ";
$subject = "Test";

$headers = "MIME-Version: 1.0\r\n".
           "To: $to\r\n".
           "From: $from\r\n".
           "Date: ".date("r")."\r\n".
           "Subject: ".$subject."\r\n";

$boundary = "------------".md5(uniqid(rand()));

$message  = "Content-Type: multipart/mixed;\r\n".
            "boundary="".$boundary.""\r\n\r\n".
            "This is a multi-part message in MIME format\r\n\r\n".
            "--".$boundary."001\r\n\r\n".
            "Content-Type: text/html; charset=ISO-8859-1;\r\n".
            "Content-Transfer-Encoding: 7bit\r\n".
            $html."\r\n\r\n".
            "--".$boundary."001\r\n\r\n";

$fp = @fsockopen($servermail, 25, &$errno, &$errstr, 30) or die ("Connexion a '$server' impossible.");
if(!$fp) {
    echo "$errstr ($errno)";
    exit();
}
fputs($fp,"HELO Mailler\r\n");
$res = fgets($fp,256);
if(substr($res,0,3) != "220") { echo "Transaction impossible.".$nl; return; }
echo " Connecté au serveur mail '$servermail' ".$nl.$nl;

fputs($fp, "MAIL FROM: $from\r\n");
$res = fgets($fp,256);
if(substr($res,0,3) != "250") { echo "Erreur à la commande MAIL FROM : $res".$nl; break; }
fputs($fp, "RCPT TO: $to\r\n");
$res = fgets($fp,256);
if(substr($res,0,3) != "250") { echo "Erreur à la commande RCPT TO : $res".$nl; break; }
echo htmlentities($to)." : ";
fputs($fp, "DATA\r\n");
$res=fgets($fp,256);
if(substr($res,0,3) != "250") { echo "Erreur à la commande DATA : $res".$nl; break; }
fputs($fp, $headers."\r\n\r\n".$message."\r\n.\r\n");
$res=fgets($fp,256);
if(substr($res,0,3) != "354") { echo "Erreur message Body : $res".$nl; break; }
echo " message envoyé ".$nl;

fputs($fp, "QUIT");
$res =fgets($fp,256);
if(substr($res,0,3) != "250") { echo "Impossible de fermer la connexion : $res".$nl; return; }
echo $nl." Transfert terminé ".$nl;
fclose($fp);
?>

et voilà ce que je recois (au lieu du joli mail en html) :



Content-Type: multipart/mixed;


boundary ="------------376897c93a6dbc966ab02c9642af9640"






This is a multi-part message in MIME format






--------------376897c93a6dbc966ab02c9642af9640001






Content-Type: text/html; charset=ISO-8859-1;
Content-Transfer-Encoding: 7bit
<html>Bonjour Benjy
Comment
allez vous ?</html>



--------------376897c93a6dbc966ab02c9642af9640001


Voilà, si jamais quelqu'un trouve ou est mon binz, ben j'lui en serait bien reconnaissant :)
Merci d'avance

Flash sans Limites
_Benjy  chez kOlapsis

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 sept. 2006 à 09:04
Hello,

c'est quoi ton client mail...?
Enfin bon, essaye ça :
- mets des \n au lieu de \r\n
- si ça ne passe tjrs pas, change le transfer-encoding (8bit, base64...?)
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
9 sept. 2006 à 12:22
Salut

MOn client mail c'est outlook2007, mais le prob vennait pas de lui.
car j'ai trouvé le prob et c'était pas non plus les \r\n (\r\n == \n la seul diff c le retour chariot avant et ca pose pas de prob)
Nan en fait c'eest que j'avait des saut de ligne entre le boundary et le contenu, et il faut pas

si ca en interresse, j'ai trouvé le format mine axact qui fonctionne (pour tt client mail) :

From: Mailler <mailler@domain.net>
MIME-Version: 1.0
Subject: Test
Content-Type: multipart/mixed; boundary="482f44131fe1db5e19400ff18e842cbd"

--482f44131fe1db5e19400ff18e842cbd
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

<html>Bonjour ben
Comment allez vous ?</html>

--482f44131fe1db5e19400ff18e842cbd
Content-Type: application/file; name="logo.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="logo.gif"

R0lGODlhdQAjANUgAMzU4pipxbK/0z5dkebq8fP1+Nnf6X+Ttktomb/J26W0zFhzoLzUXHKIr9Lj
k+PtvIuevfr88rDNQenxye70193qrqvKNMfbeM3fhfT45bbRT8HYatjmoWV9p6XGJjFSiv///wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACAALAAAAAB1ACMAAAb/QJBw
SCwaj8ikcslsJjufT8BJrVqvWCdUmu16v+DhdsokBM6EsLjTEajfSgMAkGYCoh8AHE+G+7t3UXpE
dVl8f18ECmcJBUsFCg0dAQlEgXlEAh9uQhlWh0yQC3iOWGYKBkgQeFEDEKUCZ4MCA6wfCJUgl4Mg
Cq2pFBYOVaBKCbWsgHgInEMHtngLQmMgCdCtjrtCz3gQERIeHhVKDgxDxarXyqwdpQbLZw0fA6kg
1AitAgAKCPRC2tyiTMEQzoOECBcYPCCCMNw4EOiM+GLVIECzK5eiOQpAagiBQmMI4LlY6FKCgJtA
RCjogcKGgp6EPCgoQUhEQuwKfUkgD08H/xAc5z0RqO3IJXwjhVQoOAxcuAlEGBSkAFFgkoAHlMSy
WEXTSK+YjlDD0wBJxl9DLsAEQdCDhiIzw3GoyuVIgWWlkGz52TWaSDwKxFoNuKCeJWiGQUg1OGTC
hAggHjiAujLcsJtCrEUJrGTvlS0fCID90CGxPasEkAnMq8tW1qjhzBVZ+hQEU7p9igT9YNqIZytg
K9Fi9UqMVRAFQN/K1ZqVNNjhHmjwsAHqS8sUbmMGiofJbxByAPQucokMAZQDclEbkgBplAbZoF10
wLKgBQocCk6gHx03kt3jEYEUX6eRtkR5loyS1HpEBKDaAgWcFUUz2dUXzgUgcODAAxFYUP8QZNtp
llISfxk4TRQILCEic0MooBoB4enkUU9SXDJRFMwtVp9sKk13oU3HGVFiilf5ZJwgSgQ0HgEK5pZE
UAPsApY/IExgoQcYKOWUBxbEtB0INL5mxGgEgvacUcskoRmBSyCjzZT18MeSBgx4yNJCQJqIJlms
9WJLmayISYQBql1EXhRsKuEmHrPgMcAQbV1Z0ENCqHbAHJjOkcZu8xxwBgTuweOGcst5xOmZR/Tk
JBJeIVAUCM9QKdOWO1JFBErXkIHrNX8WCM0Coc4zHhvu8SJWB+5B8CoIEIz3QEIWSMAABrYWkRqv
QbqI7QEKIlqgarwiMN477Cyh3AAFRDhrR59gQCIJG/CyQVIAoQ5wKQhbnTEqogCQ2g27/wQKMBGB
yojIFeoaXMRvBgTw7gECDDwEpgobBYDEB//xXcYcd6yXtx6HLHKBiY5ssh8bn6yyGimv7HIXLb8s
cxUxz2yzuSDfrDMTWxlqchAAOw==
--482f44131fe1db5e19400ff18e842cbd--

Merci quand mm

++



Flash sans Limites


_Benjy
  chez kOlapsis
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 sept. 2006 à 14:07
heu si, \n ou \r\n, ça a son importance selon les cas, justement.
Par contre je n'ai pas compris ce que tu  avais changé, là.
0
Darylounet Messages postés 3 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 4 octobre 2006
2 oct. 2006 à 02:00
le codage du fichier joint en base64.. ça fonctionne toujours :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
2 oct. 2006 à 07:06
ouaip ca fonctionne tjs ....
0
Rejoignez-nous