Bonjour,
Je souhaiterai lancer une tache via le shell en mode console dans le but de faire des crons.
Cependant, je n'arrive pas a envoyé d'email par ce biais. Je suis chez OVH et ma console fonctionne bien en ligne de commande et un shell de base comme celui présent sur la doc fonctionne bien.
Voici ma tache de test :

<?php
App::uses('CakeEmail', 'Network/Email');
class MailTask extends Shell {
    public function send_email() {
        $Email = new CakeEmail('default');
        $Email->from('email@gmail.com');
        $Email->to('email@gmail.com');
        $Email->subject('About');
        $Email->send('My message');
    }
    public function execute(){}
}
?>

qui me donne cette erreur :

sh: /usr/sbin/sendmail: Aucun fichier ou dossier de ce type

Pour la config par défaut.

Sauriez vous pourquoi je ne peux pas lancer de mail via un shell, est-ce que j'aurais oublié ou mal compris quelque chose.
Une configuration Gmail me donne cette erreur :

Error: Network is unreachable

Pour une config :

        'transport' => 'Smtp',
        'from' => array('email@gmail.com' => 'My Site'),
        'host' => 'smtp.gmail.com',
        'port' => 25,
        'username' => 'email@gmail.com',
        'password' => 'pass'

Une configuration OVH, me donne la meme erreur que pour Google.

Cordialement.

8 réponses


Sur les mutus OVH, tu ne peux pas passer par le port 25 ni utiliser sendmail
Il faut passer par la commande mail de php qui est configurée pour passer par leur serveur de mails (ils peuvent contrôler et éviter que l'ip du mutu soit blacklistée).
Je ne sais pas si cakeEmail propose d'utiliser la méthode mail (wrapper)
sinon tu l'utilises directement

Merci Huggy,
Cela dit en faisant un simple appel de type :

mail('email@gmail.com', 'Mon Sujet', 'Message');

J'ai cette erreur, j'avais bien tester mais sans succès.

sh: /usr/sbin/sendmail: Aucun fichier ou dossier de ce type

Cdlt

Ca ne doit pas être la commande standard de php
Essaye en dehors de cakePhp

Cette commande fonctionne en dehors du shell, mais je voudrais l'utiliser dedans.

Bonsoir,

Avec quel user as tu lancé cette commande mail ?

Si tu es sur debian, il faut tester avec l'user ww-data.

Cordialement

Bonjour,
Le user est celui qu'ovh me donne sur le mutualisé, ce n'est pas le root, je n'ai pas d'indication sur le système.
Cordialement

OVH doit avoir plusieurs conf PHP (une pour le web / une pour l'invité de commande) dans ce cas là tu es un peu grillé, il faudrait prendre contact avec le support pour leur demander si c'est volontaire ou pas.

Bonjour,
Je vous remercie, je retiens qu'il n'est donc pas possible de faire un cron via cette méthode sur un serveur mutualisé chez OVH. Effectvivement pour la version de php un php -v me donne une version 4.4.9 et un phpinfo() me donne une version 5.4

Cordialement.