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

[Mail] Envoi de mail direct par socket


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut [Mail] Envoi de mail direct par socket
    Bonjour,
    dans l'espoir de récupérer le message Id renseigné par mon serveur smtp, j'ai pompé et arrangé à ma sauce le petit script suivant qui fonctionne bien, à savoir envoie un mail. Par contre, le méchant serveur ne me renvoie pas le Message-id. Mais il doit bien être connu, puisque lorsque j'interroge les entêtes des messages envoyés dans Thunderbird par exemple, je retrouve bien l'ID attribué par le serveur SMTP !! Et je ne vois rien dans la rfc 821 http://abcdrfc.free.fr/rfc-vf/rfc821.html, pas de commande qui me permette d'interroger le serveur pour lui demander ce fameux sésame !!!
    Des idées ? des suggestions ?

    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
    <?php
    header('Content-type: text/plain; charset=utf-8');
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    $eol="\n";
    $today = date("D M j G:i:s T Y");
    $from="<moi@orange.fr>";
    $to="<moi@gmail.com>";
    $reply="<moi@christophe-charron.org>";
    $subject="Test 08 socket local orange -> $today";
    $msg=$subject;
    mailto($from , $to , $reply , $subject , $msg); 
    function mailto($from, $to, $reply, $subject, $msg) { 
      echo "Envoi d'un mail à $to";
      echo $eol; 
      $headers = "MIME-Version: 1.0\r\n"; 
      $headers .= "Content-type: text/plain; charset=utf-8\r\n"; 
      $headers .= "Reply-To: $reply\r\n"; 
      $headers .= "X-Mailer: Mes mimines"; 
      $connection = fsockopen ("smtp.orange.fr", 25, &$errno, &$errstr, 1); 
      if (!$connection) { 
        echo "$errstr ($errno) $eol"; 
      } else { 
        $res1=fgets($connection, 256); 
        if(substr($res1, 0, 3) != "220") {echo "1 Ouverture error : $res1 $eol";} else {echo "1 Ouverture ok : $res1 $eol";} 
        fputs($connection, "HELO localhost\n"); 
        $res2=fgets($connection, 256); 
        if(substr($res2, 0, 3) != "250") {echo "2 HELO error : $res2 $eol";} else {echo "2 HELO ok : $res2 $eol";}
        fputs($connection, "MAIL FROM: $from\n"); 
        $res3=fgets($connection, 256); 
        if(substr($res3, 0, 3) != "250") {echo "3 MAIL error : $res3 $eol";} else {echo "3 MAIL ok : $res3 $eol";}
        fputs($connection, "RCPT TO: $to\n"); 
        $res4=fgets($connection, 256); 
        if(substr($res4, 0, 3) != "250") {echo "4 RCPT error : $res4 $eol";} else {echo "4 RCPT ok : $res4 $eol";}
        fputs($connection, "DATA\n"); 
        $res5=fgets($connection, 256); 
        if(substr($res5, 0, 3) != "354") {echo "5 DATA error : $res5 $eol";} else {echo "5 DATA ok : $res5 $eol";}
        fputs($connection, "TO: $to\nFrom: $reply\nSubject:$subject\n$headers\n\n$msg\n.\n"); 
        $res6=fgets($connection, 256); 
        if(substr($res6, 0, 3) != "250") {echo "6 TO error : $res6 $eol";} else {echo "6 TO ok : $res6 $eol";}
        fputs($connection, "QUIT\n"); 
        $res7=fgets($connection, 256); 
        if(substr($res7, 0, 3) != "221") {echo "7 QUIT error : $res7 $eol";} else {echo "8 QUIT ok : $res1 $eol";}
        fclose ($connection);
      } 
      if(substr($res1, 0, 3) == "220" && substr($res2, 0, 3) == "250" && substr($res3,0, 3) == "250" && substr($res4, 0, 3) == "250" && substr($res5, 0, 3) == "354" && substr($res6, 0, 3) == "250" && substr($res7, 0, 3) == "221") echo "message envoyé correctement$eol"; 
    } 
    ?>
    Cordialement,
    Christophe Charron

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je ne connais pas la RFC par coeur (ca fait un moment que j'y ai pas touché). Mais ce qui me paraitrait logique, c'est que l'ID soit attribué par le recepteur du message et non par l'emetteur.

    Du coup, normal que lorsque tu emets le message, tu ne voyes pas l'ID (pas encore attribué), par contre quand tu consultes les messages en attente (le message a cette fois été reçu), l'ID lui a été attribué et est alors visible.

    Peut être que je dis des grosses bétises, mais c'est ce qui me paraitrait logique.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  3. #3
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Mais alors, comment expliquer que cet id soit dans les entêtes du courriel envoyé (pas d'une réponse, de l'original envoyé) ?
    Cordialement,
    Christophe Charron

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    Citation Envoyé par Christophe Charron Voir le message
    Mais alors, comment expliquer que cet id soit dans les entêtes du courriel envoyé (pas d'une réponse, de l'original envoyé) ?
    je confirme, dans les e-mails envoyés avec Thunderbird, j'ai bien le Message-ID du serveur SMTP
    ce que je te propose c'est d'utiliser un sniffer de réseau pour regarder la discussion entre le serveur SMTP et le client qui envoie l'e-mail pour voir ce que le programme client demande pour avoir cette information

  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    J'ai trouvé une RFC qui en parle : http://crir.univ-savoie.fr/doc/kit-j...ort/node8.html

    A première vue, ca serait utilisé soit par du ESMTP, soit par du XSMTP.

    [Edit]
    Sur cette page, http://stielec.ac-aix-marseille.fr/c.../les_bases.htm
    on trouve aussi une référence à message-id qui aurait tendance à confirmer : ESMPT ou XSMTP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Message-ID:
    C'est un identifiant unique du message. Il est attribué par le premier MTA 
    qui reçoit le message (Protocole ESMTP: Extended SMTP).
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  6. #6
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Citation Envoyé par DelphiManiac Voir le message
    J'ai trouvé une RFC qui en parle : http://crir.univ-savoie.fr/doc/kit-j...ort/node8.html

    A priori, ca serait soit du ESMTP, soit du XSMTP.
    Je ne vois pas trop ou cela en parle ?? !!
    Cordialement,
    Christophe Charron

  7. #7
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Citation Envoyé par mathieu Voir le message
    je confirme, dans les e-mails envoyés avec Thunderbird, j'ai bien le Message-ID du serveur SMTP
    ce que je te propose c'est d'utiliser un sniffer de réseau pour regarder la discussion entre le serveur SMTP et le client qui envoie l'e-mail pour voir ce que le programme client demande pour avoir cette information
    J'ai eu eu manipé, y'a déjà pas mal de temps Ethereal mais c'est hachement vieux ... Y'en existe-t'il des moins abscons ?
    Cordialement,
    Christophe Charron

Discussions similaires

  1. [Mail] Envoi date (datetime) formulaire par email
    Par loady dans le forum Langage
    Réponses: 6
    Dernier message: 13/08/2006, 21h30
  2. [Mail] envoi image sur serveur par e-mail
    Par thibotus01 dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2006, 09h17
  3. [Mail] Envoi de mail par mail()
    Par delphicrous dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2006, 09h58
  4. [Mail] Envoi de mail par SMTP ?
    Par Borami dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2006, 12h26
  5. [Mail] Envoie de caractère spéciaux par mail() ?
    Par Oberown dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 16h13

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