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] mail() ne fonctionne pas avec modem fast 3302 ?


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut [Mail] mail() ne fonctionne pas avec modem fast 3302 ?
    J'ai un serveur web+php+postgresql sur un mac. Je travaille régulièrement avec php pour fabriquer mes pages web et je voulais utiliser la fonction mail. Cependant, celle-ci ne fonctionne pas. Je m'explique. J'ai fait une page web en php envoyant un email à un correspondant. Les lumières de mon modem fonctionnent, mais l'email n'est pas reçu par le correspondant.

    Quand je fais le même test en plaçant ma page chez un hébergeur, l'email est bien reçu par le correspondant.

    D'où peut bien provenir le problème ? Merci d'avance pour votre aide !

  2. #2
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    salut,
    Partant du principe que le fonctionnement des macs est proche de celui de linux,
    je crois (mais c'est à vérifier) que la fonction mail de php utilise le programme sendmail pour envoyer les emails. Cela peut venir de sa configuration.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut sendmail
    Oui le mac fonctionne comme linux (en grande partie).

    En principe, sendmail est utilisé par php pour envoyer le mail. J'ai même vérifié qu'il est bien dans l'un des répertoires attendus. Il est dans /usr/sbin

    Dans php.ini, j'ai même :

    smtp = localhost
    port = 25

    A cette adresse, j'ai eu toute l'info :

    http://fr2.php.net/manual/fr/ref.mail.php

    Mais, l'email n'est pas reçu par le destinataire.

  4. #4
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Ton smtp n'est pas configuré correctement...
    Tu dois indiquer le smtp de ton FAI pour que cela fonctionne.
    Par exemple : smtp.neuf.fr ou smtp.club-internet.fr
    Puis redémarrer ton serveur apache.

  5. #5
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par rocchr
    Oui le mac fonctionne comme linux (en grande partie).

    En principe, sendmail est utilisé par php pour envoyer le mail. J'ai même vérifié qu'il est bien dans l'un des répertoires attendus. Il est dans /usr/sbin

    Dans php.ini, j'ai même :

    smtp = localhost
    port = 25

    A cette adresse, j'ai eu toute l'info :

    http://fr2.php.net/manual/fr/ref.mail.php

    Mais, l'email n'est pas reçu par le destinataire.
    smtp = localhost c'est pour windows, c'est bien préciser pourtant...

    Sous linux/unix donc mac, il faut preciser ton démon d'envoi local, comme sur l'exemple suivant le sendmail_path, sendmail -t -r (qui est en fait un alias vers postfix sur mon serveur) et bien sur configurer ton démon pour qu'il autorise l'envoi de mail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25
     
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    sendmail_path = /usr/sbin/sendmail -t -i

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut
    Citation Envoyé par johweb
    Ton smtp n'est pas configuré correctement...
    Tu dois indiquer le smtp de ton FAI pour que cela fonctionne.
    Par exemple : smtp.neuf.fr ou smtp.club-internet.fr
    Puis redémarrer ton serveur apache.
    Non justement, si je veux sortir des hébergeurs et des fournisseurs d'accès, je fais un serveur autonome chez moi qui n'a pas besoin d'autre chose que lui-même !

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut
    Citation Envoyé par chaced
    Sous linux/unix donc mac, il faut preciser ton démon d'envoi local, comme sur l'exemple suivant le sendmail_path, sendmail -t -r (qui est en fait un alias vers postfix sur mon serveur) et bien sur configurer ton démon pour qu'il autorise l'envoi de mail.
    Est-ce sendmail -t -r ou bien sendmail -t -i ?

    Citation Envoyé par chaced
    configurer ton démon pour qu'il autorise l'envoi de mail
    En clair, ça veut dire quoi ?

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut
    Citation Envoyé par chaced
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sendmail_path = /usr/sbin/sendmail -t -i
    Mais normalement, le fichier main.cf contient déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sendmail_path = /usr/sbin/sendmail
    sans option particulière...

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut sendmail est-il lancé ?
    j'ai vu que dans php.ini j'avais déjà aussi :

    sendmail_path = /usr/sbin/sendmail

    sans option.

    Comment savoir si sendmail est bien lancé ?

  10. #10
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut Voilà la réponse...après des heures de bataille !
    Email envoyé par la fonction mail() de php sous Mac OS X avec votre serveur web perso sous apache.
    Si vous n'arrivez pas à envoyer un email par php à un destinataire, il peut y avoir au moins deux raisons :
    - une erreur dans le codage de la fonction mail( ) (voir pour cela : http://fr.php.net/manual/fr/function.mail.php)
    - un problème dans l'utilisation par php de sendmail (expliqué dans http://fr.php.net/manual/fr/ref.mail.php). Et comme la doc n'est pas explicite, vous allez ici comprendre ce qu'il faut faire. Deux jours de travail pour en arriver là à un ignorant du programme Terminal de Mac OS X, de sudo, et tout le reste... !
    Pour que cela fonctionne il faut modifier deux fichiers :
    Pour cela, sauvegardez d'abord le fichier /etc/postfix/main.cf en en faisant une copie. Pour cela, vous pouvez faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pico /etc/postfix/main.cf
    puis mettre un espace n'importe où où cela est possible, puis CTRL X, ajoutez un caractère ou deux au nom du fichier, puis Y.
    Pour modifier ensuite le premier fichier, faites à nouveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pico /etc/postfix/main.cf
    et ajoutez la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myhostname = nomdedomainevalide.com
    à mettre après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # INTERNET HOST AND DOMAIN NAMES
    # 
    # The myhostname parameter specifies the internet hostname of this
    # mail system. The default is to use the fully-qualified domain name
    # from gethostname(). $myhostname is used as a default value for many
    # other configuration parameters.
    # 
    #myhostname = host.domain.tld
    #myhostname = virtual.domain.tld
    Enregistrez (CTRL X, puis Y)
    Ce nom de domaine que vous devez ajouter doit être valide et ne pas être le même que celui que vous allez mettre dans le deuxième fichier à modifier. Pour cela faites une sauvegarde comme précédemment pour le fichier main.cf, puis tapez à nouveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pico /usr/local/php5/lib/php.ini
    Ajoutez la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sendmail_path = /usr/sbin/sendmail -t -i -f adressevalide@nomdedomainevalide
    que vous mettez après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25
     
    ; For Win32 only.
    ;sendmail_from = <a href="mailto:me@example.com">me@example.com</a>
     
    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    Puis enfin, enregistrer (CTRLX, puis Y)
    Je répète qu'il est impératif que le nom de domaine de l'adresse email ne soit pas le même que celui placé dans le premier fichier main.cf. Par ailleurs l'adresse email doit être valide pour être acceptée comme telle par celui qui reçoit votre message. Il vaut mieux que cette adresse soit votre adresse car elle ne sert qu'à vous envoyer des messages d'erreur envoyés par sendmail si jamais il y avait une erreur bien sûr !!! Le programme sendmail étant situé dans le path donné ci-dessus : /usr/sbin.
    Si cela ne fonctionne pas, vous pouvez debugger en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pico /var/log/mail.log
    cela vous permet de comprendre ce qui se passe chaque fois que vous envoyez par php un email.
    La procédure indiquée fonctionne avec Mac OS X.4.8, apache 1.3 et php 5.2.0



    Merci à johweb, chaced et julien.63

  11. #11
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Merci à tous, c'est cool d'avoir les détails de ce qu'il faut faire pour que ça marche.

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

Discussions similaires

  1. [EasyPHP] Envoi d'e-mail qui ne fonctionne pas
    Par devdev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 24/07/2009, 11h47
  2. Réponses: 1
    Dernier message: 05/06/2009, 19h56
  3. Fonction mail() php ne fonctionne pas
    Par silverspike dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 18/12/2007, 10h11
  4. Réponses: 1
    Dernier message: 25/01/2007, 18h19
  5. [Mail] mail() qui ne fonctionne pas vers le serveur
    Par padawa dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2006, 11h49

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