Socket mail avec fichier joint

Messages postés
1637
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
- - Dernière réponse : _benjy
Messages postés
1637
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
Afficher la suite 

5 réponses

Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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...?)
Commenter la réponse de malalam
Messages postés
1637
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
0
Merci
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
Commenter la réponse de _benjy
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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à.
Commenter la réponse de malalam
Messages postés
3
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
4 octobre 2006
0
Merci
le codage du fichier joint en base64.. ça fonctionne toujours :)
Commenter la réponse de Darylounet
Messages postés
1637
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
0
Merci
ouaip ca fonctionne tjs ....
Commenter la réponse de _benjy