web-dev-qa-db-fra.com

Envoi de mails avec PHP, LAMPP et PostFix

Cela fait deux jours que j'essaye et je n'arrive pas à obtenir la chose la plus simple au travail.

Le problème: envoyer des courriels de PHP à mon adresse e-mail ne fonctionne pas

Je travaille avec Windows et Sendmail (Sendmail faisait partie de la XAMPP) avant et tout était OK. Cependant, le paquet XAMPP (1.7.7) pour Linux n’a pas intégré Sendmail. Donc, après avoir cherché un peu sur Google, j'ai découvert que Postfix convient mieux à un environnement LAMPP.


Ce que j'ai essayé jusqu'à présent:

J'ai installé Postfix et voulais le configurer pour juste tilisez le serveur smtp de mon fournisseur de messagerie privée (comme celui-ci fait sur Windows). J'ai donc configuré mon php.ini comme ceci:

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = [email protected]

sendmail_path = /etc/postfix
mail.add_x_header = On

Notez que j'ai commenté le "Win32 seulement" -stuff. Le / etc/postfix/main.cf ressemble à ceci:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc/aliases est inchangé:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc/postfix/sasl_password:

my.providers.smtp my_login:my_password

/ etc/postfic/sender_canonical:

postmaster [email protected]

Qu'est-ce qui se passe:

Alors quand je fais

> Sudo /etc/init.d/postfix start

tout semble fonctionner correctement et le / var/log/mail.log dit: "postfix/maître [9720]: le démon a commencé - version 2.8.5 , configuration/etc/postfix "

Mais lorsque j'exécute mon script PHP (qui fonctionnait parfaitement avec Windows et Sendmail), il ne fait que passer et rien ne se produit, aucune erreur n'est même consignée.


Ce que je veux réellement réaliser:

Je travaille localement sur un site de commerce électronique. Il fonctionne correctement sur le serveur Web dédié, mais je souhaite également le faire fonctionner localement pour des raisons évidentes. Dans certains cas, il envoie des courriels, et je veux simplement pouvoir les recevoir avec Thunderbird ou de toute autre manière. Est-ce que l’utilisation de Postfix est excessive ici? Je n'ai pas besoin de recevoir d'e-mails - je veux juste rendre les mails envoyés visibles d'une manière ou d'une autre. Il semble que je ne trouve pas de didacticiels pas à pas utiles pour ce problème (ni concernant Senmail ni Postfix - mais, pour être honnête, je suis très novice sous Linux).

9
Quasdunk

Dans votre php.ini, ceci:

sendmail_path = /etc/postfix

Devrait être le chemin du binaire sendmail (ou compatible).
Vous l'avez défini dans le répertoire de configuration de postfix, ce qui n'est pas correct.

Pour des raisons historiques, /usr/bin/sendmail est généralement conservé en tant que lien de compatibilité.
sendmail était dans les premiers (je suppose) et à peu près tout suppose que cela se trouve dans le MTA installé. Alors quand ce n'est pas le cas, le remplaçant crée un lien symbolique pour que rien ne casse.

13
Caesium

Pour envoyer un courrier depuis localhost (WAMP, XAMP ou LAMP), vous pouvez utiliser le package PHPMailer.

Ce sera la même instruction donnée dans le fichier readme.

WAMP (fenêtres):

Vous devez d’abord éditer le "php.ini". Pour trouver ce fichier, affichez le phpinfo en utilisant le code suivant du serveur WAMP. Créez un fichier php [setting.php] dans C:/wamp/www/et ajoutez le contenu suivant à ce fichier.

<?php
     echo phpinfo();
?>

Tapez localhost/setting.php dans le navigateur. Il recherche le "Fichier de configuration chargé" qui sera le chemin de votre php.ini .

Dans le fichier php.ini , supprimez le; (points-virgules) attribué à `extension = php_openssl.dll. Le paramétrage du serveur est terminé ...

  • Après avoir téléchargé le dossier PHPMailer de github,
  • Extraire-> Copier le dossier complet dans le dossier de votre projet, à savoir C:/wamp/www /
  • Recherchez le fichier index.php.
  • Modifiez le paramètre selon vos besoins.
  • Ensuite, dans le navigateur, tapez localhost/PHPMailer/index.php .
  • Ensuite, il affichera le message de réussite si un courrier électronique est envoyé, sinon, il affichera un message d'erreur.

LAMP (Linux):

  • Dans le cas de Linux, il n’est pas nécessaire de modifier le fichier php.ini comme je l’ai expliqué au premier point sous WAMP.

  • Un autre changement concerne le projet ou le dossier racine du document est différent.

  • Sous Linux, le dossier racine du document par défaut sera/var/www.
  • Vous pouvez facilement changer le dossier racine du document. Pour cette visite https://stackoverflow.com/a/17612396/192594
  • Copiez PhpMailer dans le dossier racine de ce document et éditez index.php selon vos besoins.
  • Ensuite, tapez localhost/PhpMailer/index.php dans le navigateur.
1
shashidhara

Pour envoyer un e-mail (avec le paquet sendmail) via Gmail à partir de localhost, veuillez vérifier PHP + Ubuntu Envoyer un e-mail en utilisant le formulaire gmail localhost une autre réponse est possible.

0
Vikas Dwivedi