web-dev-qa-db-fra.com

Testez la fonction mail de PHP chez localhost

J'ai besoin de tester une fonction qui utilise mail () de PHP
Comment puis-je faire cela sans télécharger le script sur un serveur et le tester en ligne?
De plus, je développe sans aucune connexion Internet.
Je suis sous Mac OSX sous localhost depuis XAMPP. 

21
FFish

Vous n'avez pas besoin d'installer un MTA sur votre ordinateur pour tester la fonction mail() de PHP. Sur les systèmes Unix (Linux, * BSD, OS X, etc.), vous pouvez définir sendmail_path à quelque chose comme tee mail.out > /dev/null. Cela placera les courriels (y compris les en-têtes) dans un fichier appelé mail.out.

Voici un exemple de la façon dont cela fonctionnerait:

daniel@daniel-laptop:~$ cat | php -d sendmail_path='tee mail.out > /dev/null'
<?php
mail('[email protected]', 'the subject', 'the body');
?>
daniel@daniel-laptop:~$ cat mail.out
To: [email protected]
Subject: the subject
X-PHP-Originating-Script: 1000:-


the body

Vous pouvez définir sendmail_path dans votre fichier php.ini. Si vous souhaitez ajouter des courriels au fichier au lieu de les écraser à chaque fois, vous pouvez utiliser tee -a au lieu de tee.

52
Daniel Egeberg

Pour tester l'envoi de courrier électronique à partir d'Apache, procédez comme suit:

créer un dossier pour stocker l'email.

/home/username/Documents/TestEmails

Donnez la permission à Apache. Dans le dossier Documents, exécutez

Sudo chgrp -R www-data TestEmails

Modifiez le fichier php.ini, le mien se trouve à

/etc/php5/Apache2/php.ini

définir sendmail_path

sendmail_path ='cat > /home/username/Documents/TestEmails/mail.txt'

Redémarrer apace2

Sudo service Apache2 restart
7
Xavier John
5
biziclop

Hmm. Je n'ai pas essayé cela, mais dans php.ini, vous pouvez définir "sendmail_path" ... donc, en théorie, vous pouvez écrire votre propre script Shell qui écrit simplement l'entrée dans des fichiers texte et changer votre php.ini pour l'utiliser. Ensuite, exécutez simplement des tests et vérifiez les fichiers texte!

1
James

Configurez un serveur pop3 sur la machine locale. Beaucoup sont disponibles gratuitement. Et envoyez des mails dans votre domaine local à l’aide de sendmail.

Par défaut, il n'est pas nécessaire de définir le chemin sendmail sous Linux. au moins, je n'en ai jamais eu besoin. utilisez simplement la fonction mail () et tapez des mails sur le domaine local

0
Neel Basu

S'appuyant sur la réponse fournie par Daniel-Egeberg, voici ce qui a fonctionné pour moi sur Ubuntu 18.04:

J'ai ouvert le fichier /etc/php/7.2/Apache2/php.ini et défini:

sendmail_path = 'tee /path/to/file/mail.out'

redémarré:

Service Sudo Apache2 redémarrer

puis créé /path/to/file/mail.out et modifié ses autorisations:

chmod 666 /path/to/file/mail.out

0
chimeraha

Si vous utilisez Windows/utilisez quelque chose comme WAMP/UWAMP/XAMPP et avez besoin de tester le courrier, alors Papercut vaut bien un coup d'oeil: 

https://github.com/ChangemakerStudios/Papercut

Vous pouvez laisser vos paramètres SMTP dans le fichier php.ini par défaut (localhost/25) et cela fonctionne. Il ressemble à un client de messagerie et montre toutes les parties de/détails d'un message dans des sections séparées.

0
trapper_hag