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.
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
.
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
Une solution simple et agréable pour les tests:
http://blogs.bigfish.tv/adam/2009/12/03/setup-a-testing-mail-server-using-php-on-mac-os-x/ Lien mis à jour: https://github.com/ifunk/smtp-catcher
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!
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
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
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.