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 qui ne part jamais


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut Mail qui ne part jamais
    Bonjour,

    J'ai suivi plusieurs tutoriaux pour envoyer des emails et je souhaite avoir une fonction pour cela. Cependant, malgré la simplicité apparente du script, le mail n'est pas envoyé. Je n'ai aucune erreur visible.

    Mon code est le suivant:
    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
     
    function mailing($destinataire, $expediteur_nom, $expediteur_mail, $sujet, $message_html)
    {
     
     
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui rencontrent des bogues.
    	{
    		$passage_ligne = "\r\n";
    	}
    	else
    	{
    		$passage_ligne = "\n";
    	}
     
     
     
    	//=====Création du header de l'e-mail.
    	$header = "From: \"".$expediteur_nom."\"<".$expediteur_mail.">".$passage_ligne;
    	$header.= "Reply-to: \"".$expediteur_nom."\"<".$expediteur_mail.">".$passage_ligne;
    	$header.= "MIME-Version: 1.0".$passage_ligne;
    	$header.= 'Content-Type: text/html;'.$passage_ligne.' charset="utf-8"'.$passage_ligne;
    	$header.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
     
    	//=====Ajout du message au format HTML
    	$message.= $passage_ligne.$message_html.$passage_ligne;
     
    	//=====Envoi de l'e-mail.
    	if(mail($destinataire,$sujet,$message,$header))
    		echo 'bien envoyé';
    	else
    		echo 'Une erreur s\'est produite'; 
     
    }
    ?>
    D'avance, merci pour vos lumières.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Sous quel environnement ?

    En en enlevant $headers ?

    Et sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui rencontrent des bogues
    ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $passage_ligne = "\r\n";  // RFC je sais plus combien

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Question existentielle : le mail ne part pas ou il n'arrive pas ?

    Une alternative est d'utiliser PHPMailer qui fait très bien les entêtes tout seul Envoyer des mails simplement avec PHP
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    >Sans les headers, le résultat est le même...Rien ne me parvient.

    >Pour l'environnement, il s'agit d'un serveur sous linux, la fonction mail est active puisque à travers un script autre mon email partait (mais atterrissait dans les indésirables)


    >Merci beaucoup pour la classe PHP (je conserve le nom) mais j'aimerais comprendre tout d'abord ce qu'il se passe et pourquoi. Niveau de la question existentielle, j'ignore comment obtenir la réponse.

    NB: Entendu pour la norme de passage de ligne, je suppose que c'est une astuce qui n'est plus d'actualité...

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 099
    Points
    43 099
    Par défaut
    C'est un serveur Linux sur lequel tu as la main ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    Oui, c'est un dédié.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    ok. alors en ssh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "coucou" | mail -s"test" tonmail@tonprovider.fr
    Est ce que ca t'envoie un mail ?

    En PHP
    Que dit la ligne sendmail_path ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    Merci pour ton aide, il est marqué dans le PHPinfo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/sbin/sendmail -t -i 	/usr/sbin/sendmail -t -i
    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "coucou" | mail -s"test" tonmail@tonprovider.fr
    J 'ai un command not found, je suppose que le problème est donc plus en profondeur ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Si which sendmail ne te renvoie rien, c'est assez mal parti, vu que la fonction mail() de php s'appuie sur sendmail pour envoyer des mails.

    Soit tu te lances dans l'installation (compliquée) de sendmail; ou beaucoup plus facile, tu utilises phpmailer avec smtp.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par scvo.0ne Voir le message
    Si which sendmail ne te renvoie rien, c'est assez mal parti, vu que la fonction mail() de php s'appuie sur sendmail pour envoyer des mails.

    Soit tu te lances dans l'installation (compliquée) de sendmail; ou beaucoup plus facile, tu utilises phpmailer avec smtp.
    Je m'y suis mal pris je crois car Which sendmail me renvoie /usr/sbin/sendmail. Donc à priori c'est installé.


    (Pour PHPmailer, gère t'il la réception des emails également ? Où trouver l'adresse du smtp ?)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    J'ai appris quelque chose aujourd'hui. J'étais persuadé que mail et sendmail venaient du même package.

    Donc du coup que mail ne soit pas présent n'est pas forcément génant. Tu devrais pouvoir tester avec (je n'ai pas de dedié sous la main pour tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "test" | sendmail -v tonmail@tonprovider.fr
    Pour phpmailer non ca ne gère pas la réception des mails

    L'adresse du smtp : l'adresse de ton dedié, mais pour ca faut avoir un serveur smtp d'installé

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 129
    Points : 57
    Points
    57
    Par défaut
    Ah cette fois, j'ai une réponse du terminal:

    Mail Delivery Status Report will be mailed to <root>.

    Cependant, je n'ai pas reçu de mail.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    Là ca sort trop de PHP. Tu devrais regarder sur le forum de support de ta distrib et/ou de ton hébergeur.

Discussions similaires

  1. mail qui ne part pas
    Par laurentSc dans le forum Langage
    Réponses: 9
    Dernier message: 10/03/2011, 09h23
  2. [Mail] mail() qui ne fonctionne pas vers le serveur
    Par padawa dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2006, 11h49
  3. [Mail] mail qui arrive dans spam
    Par i_shinji dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2006, 14h06
  4. [Mail] envoyer un mail qui n'est pas anonyme
    Par mzt.insat dans le forum Langage
    Réponses: 21
    Dernier message: 10/12/2005, 09h16
  5. Compter le nb de mails qui arrivent ou partent de outlook
    Par maxagaz dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/05/2005, 14h38

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