Bonjour,
J'utilise un serveur mutualisé chez OVH et je souhaite, une fois par jour, envoyer automatiquement un email récapitulatif d'un certain nombre de données du site Web.
J'ai donc créé un fichier batch.php qui récupère les données, crée le contenu de l'email et l'envoie en utilisant phpMailer en mode SMTP de manière tout à fait classique (ssl0.ovh.net, port 587, username et password).
Quand je lance le script depuis mon browser https://monsite.com/batch.php , cela fonctionne sans problème et je reçois bien l'email.
En revanche, en utilisant le cron d'OVH, il ne se passe rien.
J'ai donc testé en lançant batch.php à la main depuis SSH (php path/batch.php ou php -c ./php.ini path/batch.php) et j'ai une erreur "SMTP() connect failed".
J'ai également testé en paramétrant le smtp sur Mailtrap ou sur gmail et j'ai exactement le même problème : ça marche quand c'est lancé depuis le brower mais cela ne fonctionne pas en ligne de commande .
Est-ce qu'il y a une limitation chez OVH sur l'envoi d'email quand c'est envoyé depuis la ligne de commande SSH et donc en mode cron pour éviter les envois de spam ?
Si c'est le cas, est-ce que vous voyez comment résoudre le problème ?
Bien cordialement,
en utilisant le cron d'OVH, il ne se passe rien.
Bonjour,
Le cron peut-il appeler une page PHP qui va elle envoyer le mail ?
Ceci afin que ce soit le moteur d'exécution web qui s'en charge, car l'environnement cron est bridé.
C'est bien ce que je fais.
Que ce soit en SSH ou avec le Cron, la syntaxe est
php path/batch.php
C'est dans ce fichier batch.php qu'il y a l'envoi de l'email avec PHPMailer
Bonjour,
Et si vous passez en mode mail() ?
Cordialement, janus57
Je viens de tester
sendmail: fatal: User xxxx is not allowed to submit mail
xxxx étant l'identification de connexion SSH.
Ca craint pour ce que je veux faire ![]()
Que ce soit en SSH ou avec le Cron, la syntaxe est
php path/batch.php
faites un curl ou bien un wget, pour que l'exécution se passe dans le contexte du serveur web, comme je vous le suggérais.
La suggestion était plutôt sous-entendue ![]()
que ce soit avec curl ou wget : connexion refusée !!!
Mais cela m'a donnée une idée.<br />Il y a effectivement beaucoup de limitations sur le ssh d'OVH (et c'est normal).<br /><br />J'ai créé un fichier executebatch.php qui lit la page batch.php <br />> > $context = stream_context_create(<br />> array(<br />> "http" => array(<br />> "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"<br />> )<br />> )<br />> );<br />> $html = file_get_contents ('http://monsite.com/batch.php', false, $context);<br />> echo $html;<br /><br />Le user-agent est obligatoire parce que sinon, OVH refuse la lecture du fichier.<br /><br />Si on le lance depuis le SSH d'OVH, il y a toujours une interdiction d'ouverture du fichier.<br /><br />Mais si je lance en local, cela fonctionne. <br />Comme j'ai un NAS Synology avec un cron, il suffit que je lance un cron sur executebatch.php depuis mon NAS pour exécuter la page batch.php sur le serveur OVH.<br /><br />C'est un peu compliqué, mais cela fonctionne.
Le user-agent est obligatoire
C'est peut-être le firewall activé dans votre multisite et qui (entre autres) impose le user-agent.
Peut-être, mais finalement ça me sert
Depuis ma page en local sur le synology, j'envoie un user-agent bidon. Et sur la page batch.php je vérifie que c'est ce user-agent avant d'exécuter l'envoi d'email. Ca empêche n'importe qui d'exécuter la tache d'envoi de l'email.
Très déçu de la réponse du support OVH. Manifestement, ils ont vu SMTP dans le texte de ma question, donc ils ont répondu avec la réponse standard sans chercher à lire la question.
Extraits de la réponse :
> Suite aux vérifications, je vous rassure que de notre côté, tout est en ordre concernant l'envoi depuis notre infrastructure.
Vous m'en voyez ravi. Mais ça ne m'explique pas pourquoi des envois d'email ne fonctionnent pas quand on tente d'envoyer un email via un script PHP en SSH.
> le souci ne provient pas du compte lui-même, mais de votre client SMTP ou bien de l'environnement utilisé (connexion internet, pare-feu, antivirus, etc.).
Il s'agit d'un script PHP fonctionnant sur un serveur OVH. Que viennent faire ma connexion Internet et mon antivirus là-dedans ?
> D'une façon générale, voici les informations à renseigner pour une configuration optimale avec le serveur SMTP de OVHcloud :
> Adresse e-mail : votre adresse e-mail OVHcloud entière.
> Mot de passe : le mot de passe de votre adresse e-mail.
> …
Merci de m'expliquer comment se connecter à un serveur SMTP. Je venais juste d'expliquer que lorsque le script PHP est lancé en interactif, la connexion SMTP fonctionne alors qu'avec le même script, elle ne fonctionne pas en SSH.
Bref, je laisse tomber. J'ai trouvé une solution palliative
elle ne fonctionne pas en SSH.
Si vous parlez de l'environnement ssh d'un héberment mutualisé Pro, sachez que vous êtes dans un environnement qui a été bridé suite à de multiples abus.
Depuis le début, j'explique que cela ne fonctionne pas en SSH et je demande s'il y a des limitations en SSH.
Tout ce que je demande, c'est qu'on lise ma question et qu'on réponde à ma question. Mais cela semble très compliqué…
Tout ce que je demande, c'est qu'on lise ma question et qu'on réponde à ma question.
Je quote votre premier message:
Quand je lance le script depuis mon browser https://monsite.com/batch.php , cela fonctionne sans problème et je reçois bien l'email.
En revanche, en utilisant le cron d'OVH, il ne se passe rien.
J'ai donc testé en lançant batch.php à la main depuis SSH (php path/batch.php ou php -c ./php.ini path/batch.php) et j'ai une erreur "SMTP() connect failed".
Votre question part dans tous les sens, permettez-nous d'être un peu égarés aussi...
Ma question ne part pas dans tout les sens.
Première étape : j'expose les faits :
1) quand je lance le script depuis un browser, ça fonctionne
2) quand je lance le même script depuis cron, ça ne fonctionne pas
3) quand je lance le même script depuis SSH pour vérifier, ça ne fonctionne pas et je donne le message d'erreur.
Deuxième étape : ma question (et je quote mon premier message) :
> Est-ce qu'il y a une limitation chez OVH sur l'envoi d'email quand c'est envoyé depuis la ligne de commande SSH et donc en mode cron pour éviter les envois de spam ?
Il n'y a rien de plus simple
Il n'y a rien de plus simple
Je n'ai pas d'hébergement Pro car je travaille sur serveurs dédiés, donc je ne peux pas tester à votre place.
Je vous avais suggéré que votre cron invoque une page de votre site web via curl ou wget, et que c'est cette page qui va envoyer les mails (ainsi c'est l'environnement du serveur web et non celui de votre cron qui va expédier les mails).