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 :

Envoi d'un e-mail avec autorisation !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 113
    Par défaut Envoi d'un e-mail avec autorisation !
    Bonjour à tous.

    Je cherche à envoyer un e-mail vers un serveur SMTP avec autorisation.
    Voici mon script PHP :
    Code php : 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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <!doctype html>
    <html lang="fr">
    <head>
    <meta charset="ISO-8859-1" />
    <title>Envoie d'un e-mail par socket !</title>
     
    <link rel="stylesheet" type="text/css" href="Styles.css" />
    </head>
     
    <body>
    <?php
    $serveur  = "???";
    $nom1     = "???";
    $email1   = "???";
    $password = "???";
     
    $client   = gethostname();
    $port     = 587;
     
    $nom2     = "???";
    $email2   = "???";
     
    $sujet    = "Test 1 !";
    $message  = "Test de l'envoi d'un message simple !";
    ?>
     
    <table>
    	<tr><td>Client       </td><td><?php echo ': '.$client;                ?></td></tr>
    	<tr><td>Serveur      </td><td><?php echo ': '.$serveur;               ?></td></tr>
    	<tr><td>Port         </td><td><?php echo ': '.$port;                  ?></td></tr>
    	<tr><td>Expéditeur   </td><td><?php echo ': '.$nom1.' ('.$email1.')'; ?></td></tr>
    	<tr><td>Destinataire </td><td><?php echo ': '.$nom2.' ('.$email2.')'; ?></td></tr>
    	<tr><td>Sujet        </td><td><?php echo ': '.$sujet;                 ?></td></tr>
    	<tr><td>Message      </td><td><?php echo ': '.$message;               ?></td></tr>
    </table>
     
    <?php
    $errno   = "";
    $errmsg  = "";
    $timeout = 20;
    $socket  = fsockopen($serveur, $port, $errno, $errmsg, $timeout);
     
    if ($errno != 0)
    {
    ?>
     
    	<br />
    	<table>
    		<tr><td>Connexion impossible</td><td><?php echo ': '.$serveur.' !';         ?></td></tr>
    		<tr><td>numero d'erreur     </td><td><?php echo ': '.$errno;                ?></td></tr>
    		<tr><td>Message d'erreur    </td><td><?php echo ': '.htmlentities($errmsg); ?></td></tr>
    	</table>
     
    <?php
    }
    else
    {
    	fputs($socket, "EHLO $client\n");
    	fputs($socket, "AUTH LOGIN\n");
    	fputs($socket, base64_encode($email1)."\n");
    	fputs($socket, base64_encode($password)."\n");
    	fputs($socket, "MAIL FROM:<$email1>\n");
    	fputs($socket, "RCPT TO:<$email2>\n");
    	fputs($socket, "DATA\n");
    	fputs($socket, "FROM:$nom1 <$email1>\n");
    	fputs($socket, "TO:$nom2 <$email2>\n");
    	fputs($socket, "SUBJECT:$sujet\n");
    	fputs($socket, "MIME-VERSION: 1.0\n");
    	fputs($socket, "CONTENT-TYPE:TEXT/PLAIN;CHARSET=ISO-8859-1\n");
    	fputs($socket, "$message\n");
    	fputs($socket, "\n.\n");
    	fputs($socket, "QUIT\n");
    	stream_set_blocking($socket, true);
     
    	$info   = stream_get_meta_data($socket);
    	$result = "";
     
    	while ((!feof($socket)) && (!$info['timed_out']))
    	{
    		$new     = fgets($socket, 4096);
    		$result .= str_replace(Chr(10), "<br />", $new);
    		$info    = stream_get_meta_data($socket);
    	}
     
    	fclose($socket);
    ?>
     
    	<br />
    	<div id="bloc">  <?php echo $result; ?></div>
     
    <?php
    	if ($info['timed_out'])
    	{
    ?>
    		<br />
    		<div id="alerte">Connection Timed Out!</div>
     
    <?php
    	}
    }
    ?>
    </body>
    </html>
    Je n'ai pas mis en clair mes adresses e-mail.

    C'est un script php de test pour voir comment fonctionne l'envoie d'e-mail.
    Le problème que je rencontre est l'envoi d'e-mail avec autorisation.

    Vers un serveur SMTP de chez SFR, l'envoie fonctionne.

    Par contre, cela ne fonctionne pas vers un serveur SMTP de chez Alwaysdata.
    Cela provoque une erreur : "554 SMTP synchronization error".
    Comment modifier le script php pour ne plus avoir cette erreur ?

    Merci.
    Cordialement.
    Artemus24.
    @+

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 356
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 356
    Billets dans le blog
    17
    Par défaut
    Je ne connais pas le protocol SMTP.

    Je remarque que dans un premier temps tu envoies les commandes et que dans un second temps tu récupères les réponses du serveur.

    Vu le message d'erreur, peut-être que le serveur AlwaysData préférerait que tu lises ses réponses au fur et à mesure. Je testerais avec un Telnet avant de toucher au script PHP.

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 113
    Par défaut
    Salut Seb.

    Merci pour ta participation.

    Citation Envoyé par Seb.
    Je remarque que dans un premier temps tu envoies les commandes et que dans un second temps tu récupères les réponses du serveur.
    Tous les exemples que j'ai vus sont construits de cette façon.

    Citation Envoyé par Seb.
    Vu le message d'erreur, peut-être que le serveur AlwaysData préférerait que tu lises ses réponses au fur et à mesure.
    Et je procède comment ? Car j'ignore le nombre des réponses que je peux avoir.

    Citation Envoyé par Seb.
    Je testerais avec un Telnet avant de toucher au script PHP.
    Par Telnet ou par un socket, le fonctionnement est le même.

    Cordialement.
    Artemus24.
    @+

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 356
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 356
    Billets dans le blog
    17
    Par défaut
    Et je procède comment ? Car j'ignore le nombre des réponses que je peux avoir.
    Il faut lire sur ta socket, selon le protocole.

    Par Telnet ou par un socket, le fonctionnement est le même.
    La différence est que c'est interactif. Exécute les commandes SMTP via Telnet, ainsi tu verras en live précisément à quel niveau ça bloque.

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 113
    Par défaut
    Salut Seb.

    J'ai suivi ton conseil et j'ai installé TELNET.
    J'ai fait le test manuellement :
    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
    C:\> telnet smtp-xxxxxxxx.alwaysdata.net 587
    connexion à smtp-xxxxxxxx.alwaysdata.net ...
    220 smtpout1.paris1.alwaysdata.com ESMTP Exim 4.92 Sat, 19 Feb 2022 16:47:09 +0100
    EHLO xxxxxxxx
    250-smtpout1.paris1.alwaysdata.com Hello xxx.xxx.xxx.xxx.rev.sfr.net [xxx.xxx.xxx.xxx]
    250-SIZE 52428800
    250-8BITMIME
    250-PIPELINING
    250-AUTH PLAIN LOGIN
    250-STARTTLS
    250 HELP
    AUTH LOGIN
    334 VXNlcm5hbWU6
    xxxxxxx
    334 UGFzc3dvcmQ6
    xxxxxxx
    235 Authentication succeeded
    mail from:<xxxxxxxx@xxxxxxxx.fr>
    250 OK
    rcpt to:<xxxxxxxx@xxxxxxxx.fr>
    250 Accepted
    data
    354 Enter message, ending with "." on a line by itself
    subject: Hello !
    
    Test Envoi Message.
    .
    250 OK id=1nLS7U-0004Su-Ep
    quit
    221 smtpout1.paris1.alwaysdata.com closing connection
    
    
    Perte de la connexion à l’hôte.
    
    C:\>
    L'e-mail a bien été transféré dans ma boîte aux lettres.

    Je ne comprends pas la cause de cette erreur 554.

    Cordialement.
    Artemus24.
    @+

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 356
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 356
    Billets dans le blog
    17
    Par défaut
    Tu ne reproduis pas exactement le mail envoyé par PHP
    Tu peux aussi tester un copier/coller dans ton Telnet pour tout envoyer d'un coup sans lecture, comme le fait le script

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

Discussions similaires

  1. Envoi de mail avec authentification
    Par troumar dans le forum Réseau
    Réponses: 1
    Dernier message: 05/02/2014, 13h55
  2. Envoi simple de mail avec authentification
    Par fear-69 dans le forum Java ME
    Réponses: 1
    Dernier message: 02/02/2010, 16h14
  3. [javaMail] envoi mail avec authentification
    Par totofe dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 30/09/2009, 15h24
  4. envoi de mail avec authentification
    Par jfb53 dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/08/2006, 13h23
  5. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 17h18

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