Lorsque j'exécute mon script e-mail via navigateur, une erreur fatale du délai d'attente est renvoyée (sauf si j'augmente considérablement l'heure d'exécution, il fonctionnera correctement, pas la solution que je recherche). L'email est envoyé tho strong>, mais il faut pour toujours (5 min. moyenne) pour arriver (dans ma boîte de réception)! Il s'agit donc du code exécuté par la demande de navigateur: P>
(Considérant que via la ligne de commande, il fonctionne parfaitement, je pense que SMTP à php.ini est certainement bien configuré.) php -r "mail('amatos@example.com', 'test subject', 'test body', 'From: Andre Matos <amatos@example.com>');"
6 Réponses :
juste pour être clair: l'instance php utilisée par le script est la même que celle utilisée par le code de ligne de commande? p>
De nombreux hôtes Web utilisent SMTP-relais, qui rassemblera un tas d'emails et les envoyer tous en même temps, il ne s'agira donc pas d'un comportement étrange si votre courrier est en retard. Cependant, le temps d'exécution long n'est pas normal. P>
Je cours de ma machine, alors oui, c'est la même chose.
J'ai supposé certains couses, mais j'avais l'habitude de linux et sur Windows, je peux olny deviner: p>
Bonjour, j'ai essayé d'exécuter le fichier via CLI comme indiqué et cela a fonctionné comme prévu, livraison instantanée; Donc, le problème ne devrait pas être le fichier de script.
@andrematos à vérifier .1 Vous pouvez réinstaller mod_php et pour vérifier .2 Vous pouvez faire à partir d'Apache / HTML_Page System ("PHP -F Z: \ PATH \ TO \ PHP \ Mail.php")
Bonjour Ivan, j'ai testé .2 Et a été surpris de voir qu'il prend autant que l'exécution du courrier () directement à partir du navigateur. Est-il possible alors que différents utilisateurs sont utilisés? Je veux dire, tout était installé de la même manière, en même temps ... n'a toujours aucun sens ... merci quand même.
Compte tenu de cette note de http://php.net/manual/fr/function. Mail.php , il semble très probable que le problème soit avec le MTA et non PHP directement: p>
La mise en œuvre de Windows de Mail () diffère de nombreuses manières de la mise en œuvre UNIX. Premièrement, il n'utilise pas de binaire local pour composer des messages, mais fonctionne uniquement sur des prises directes, ce qui signifie qu'un MTA est nécessaire d'écouter sur une prise réseau (qui peut soit sur la localhost ou une machine distante). P> blockQuote>
Peut-être que cela a quelque chose à voir avec la manière dont le MTA répond à l'utilisateur particulier ou aux règles de pare-feu spécifiques à l'utilisateur pour les connexions de courrier sortant sur votre ordinateur. Pouvez-vous exécuter la ligne de commande comme utilisateur du serveur Web plutôt que vous-même? Si oui, cela ré-crée-t-il le problème de la ligne de commande? P>
Que diriez-vous que le serveur Web exécute la ligne de commande PHP plutôt que le fichier PHP analysé? (Par exemple, vous pouvez peut-être exécuter un script de lot via CGI.) Est-ce que cela résoudra le problème? P>
(désolé que ce soit plus de suppositions que de réponses précises.) P>
Trott, merci pour vos efforts, cependant, comme je l'ai expliqué à Sekar (voir commentaires), je ne pense pas que je passe à travers MTA. J'aurais peut-être la mauvaise idée ..
@andrematos MTA est un terme générique pour quelque chose qui gère le transfert de courrier. Peu importe, je vérifierais toujours que la question potentielle impliquant des utilisateurs et des règles de pare-feu reste.
Essayez de définir le nom d'utilisateur et le mot de passe sur "à partir" ID de messagerie. Donc, il peut authentifier et envoie le courrier rapidement.
Avez-vous essayé Mailer PHP ? P>
Dans mon observation, il envoie des mails en quelques secondes. En dessous de l'exemple vous donnera un aspect rapide Comment utiliser la classe PHP Mailer. P> La mise en œuvre de Windows de Mail () diffère de nombreuses manières de la mise en œuvre UNIX. Premièrement, il n'utilise pas de binaire local pour composer des messages, mais fonctionne uniquement sur des sockets directs, ce qui signifie qu'un MTA est nécessaire d'écouter sur une prise réseau (qui peut soit sur la localhost ou une machine distante). p> afin que cela puisse causer de retard? Je pense que cela Link pourrait vous aider. P> p>
Dans le manuel PHP, ils ont déclaré que celui-ci, P>
J'ai essayé à la fois phpmailer et Swift et le comportement est exactement le même.
Sekar, je me connecte à la destination SMTP. Mes paramètres sont comme: smtp: mail.example.com; De: amatos@example.com; À: amatos@example.com; Je pense donc que MTA n'a aucun rôle ici.
Avant d'envoyer votre courrier dans le script, assurez-vous d'imprimer le J'aime toujours tester le courrier via Telnet afin que je puisse voir si le serveur donne si le serveur donne Une erreur qui n'est pas transmise correctement par le client: p> ini_get () code> des variables
smtp code>,
smtp_port code> et < Code> sendmail_from code> et assurez-vous que ce sont des valeurs de travail. PHP en cours d'exécution sur Windows n'a pas l'avantage de l'envoi de courrier via Sendmail, et quels que soient les Devs PHP, crochèrent au mieux.
Mon premier conseil serait que la version du navigateur de votre mailing a déjà un contexte ou des connexions prêtes pour l'envoi. Au contraire, l'exécution directe (PHP -R) doit charger le contexte postal. P>
Pour confirmer cette idée, vous pouvez créer une boucle pour envoyer 10 mails et vérifier les courriers après la première étant beaucoup plus rapide. p>
La ligne de commande et le navigateur utilisent réellement deux fichiers PHP.ini différents. Vous pouvez rechercher PHP.ini et comparer vos paramètres
Cela n'a aucun sens pour moi; J'ai donc vérifié:
php -ini code> renvoie le même chemin pour le fichier de configuration en tant que navigateur.
J'assume que Sendmail_Path est la même chose que?
Avez-vous essayer l'exemple de "Dave Dot Kelly à Dawkco Dot Com" Vous pouvez trouver sur it.php.net/manual/fr/function.mail.php ? La référence à php_eol peut être votre solution.
DJDY B>, oui le sendmail_path est identique. Ivan Buttinoni B>, cela ne fonctionne pas, a le même comportement.
Si vous avez Windows 7 ou Vista, cela dépend de l'utilisateur de sorcière que vous utilisez pour démarrer CMD Shell et démarrer PHP avec. Si cet utilisateur n'a pas de privilège d'envoyer des mails, vous pouvez avoir ce comportement.
BKKSI, cela aurait un sens si cela dépendait de l'utilisateur, je démarre le navigateur Web. La CLI fonctionne bien.