[résolu]Envoyer mail apache avec php

bonjour,
j’utilise mutt pour envoyer des mails , en ligne de commande
ex :

echo test | mutt -s notification monadressemail@free.fr

tout fonctionne bien , je l’ai positionné dans /var/www/html/mail et j’ai fais un script.sh qui en ligne de commande fonctionne bien ,
Si par l’interface web et un fichier.php j’essaie de le faire partir ça me donne “coultd not send the message”.
j’ai essayé directement de php en :

echo exec ('echo test | mutt -s notification monadressemail@free.fr');

ou

echo exec ('monscript.sh');

c’est pareil le même message j’ai ouvert les droits maximum et chown www-data partout et rien n’y fait !
Quelqu’un aurait une idée ?
A bientôt

Salut,

Il me semble que cela vient du fait que www-data est un utilisateur système et qu’il n’ a pas le même type de shell qu’un utilisateur normal, par conséquent il n’a peut être pas accès à la commande mutt.

Merci pour ta réponse @Tripayou
www-data a les droits Root don normalement il devrait y arriver :slightly_smiling_face:,
J’ai un autre montage avec raspberry et là il fonctionne donc je ne vois pas ou !!,
Depuis Buster et stretch c’est un peu plus compliqué,
Certainement pour la sécurité , ssmtp n’y est plus lutte n’est pas mal mais je préférais ssmtp .
J’ai essayé aussi avec msmtp qui fonctionne bien en ligne de commande mais même soucis avec Apache …
A plus

Bonjour,

Je ne comprends pas bien ce que tu veux faire, ni pourquoi tu utilises mutt.

Si tu veux envoyer un courriel via PHP, il y a une fonction mail pour cela. Par défaut cette fonction utilise sendmail. Il suffit donc d’avoir, par exemple, msmtp correctement configuré pour que cela fonctionne.

Sinon, donner les droits root à www-data est une extrêmement mauvaise idée.

Bonjour@Bruno1
Avant d’utiliser mutt , j’utilisais ssmtp , aujourd’hui absent dans les paquets,
mutt fonctionne bien et msmtp aussi également que j’ai configuré et comme je l’explique en ligne de commande tout fonctionne .
Pour les droits je suis d’accord mais je les enlèverai par la suite !.
la fonction mail de php est à essayer ,
merci pour ta réponse

J’ajoute que la configuration du compte d’envoi de courriel (serveur SMTP), que ce soit avec msmtp ou mutt, doit être accessible à l’utilisateur qui lance la commande. C’est à dire www-data si c’est lui qui exécute les scripts.

Salut @anon70622873,

avec msmtp ca fonctionne mais il faut modifier le fichier php.ini

sendmail_path = "/usr/bin/msmtp -t -C /repertoire_ou_ya/.msmtprc"

le fichier .msmtprc il faut lui donner les droits www-data , et trouver un formulaire php pour envoyer les mails

<?php
// Le message
$message = "Line 1\r\nLine 2\r\nLine 3";

// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Envoi du mail
mail('caffeinated@example.com', 'Mon Sujet', $message);
?>

directement php ne peux pas envoyer de mail par mutt ou msmtp , il faut lui associer dans le fichier php.ini

@Tripayou,

Même avec les droits

echo shell_exec( 'echo test | mutt -s notification monadressemail@free.fr'); 

aucune action supplémentaire .
encore merci .

A plus et merci

Non. Si msmtp est installé correctement sendmail est un lien symbolique vers msmtp :

ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 12 nov.  28  2016 /usr/sbin/sendmail -> ../bin/msmtp

Et la configuration du compte doit être faite au niveau du système dans /etc/msmtprc, sans avoir besoin de modifier les droits. J’ai déjà donné le lien vers une doc.

Bonjour Bruno
pour répondre voici

ls -l /usr/sbin/sendmail
ls: impossible d'accéder à '/usr/sbin/sendmail': Aucun fichier ou dossier de ce type

et

drwxr-xr-x   2 root root    4096 nov.  15 08:40 menu
drwxr-xr-x   2 root root    4096 nov.  15 08:41 menu-methods
-rw-r--r--   1 root root   24512 févr.  9  2019 mime.types
-rw-r--r--   1 root root     812 août   3  2019 mke2fs.conf
drwxr-xr-x   2 root root    4096 févr. 10 08:44 modprobe.d
-rw-r--r--   1 root root     195 nov.  13 17:30 modules
drwxr-xr-x   2 root root    4096 févr. 10 08:00 modules-load.d
-rw-r--r--   1 root root     286 août  30  2019 motd
drwxrwxrwx   2 root root    4096 mars   3 18:56 motion
drwxr-xr-x   2 root root    4096 nov.  15 08:40 mpv
lrwxrwxrwx   1 root root      19 nov.  13 18:17 mtab -> ../proc/self/mounts
-rw-r--r--   1 root root    4954 mai   25  2019 Muttrc
drwxr-xr-x   2 root root    4096 mars   6 10:11 Muttrc.d
drwxr-xr-x   4 root root    4096 févr. 10 08:01 mysql
-rw-r--r--   1 root root    9278 juin  12  2019 nanorc

et il n’y a aucun msmtprc dans /etc/

le seul est .msmtprc qui est dans /home/mondossier_personnel !

Merci de lire la doc msmtp que j’ai déjà indiquée. J’ai rédigé cette doc pour permettre justement d’envoyer des mails depuis un serveur sans sortir l’artillerie lourde de type Postfix.

Je suppose que tu n’as pas installé msmtp-mta et si le fichier /etc/msmtprc n’existe pas il faudra le créer.

J’avoue que le paquet msmtp-mta n’y était pas, et j’avais suivi ta Doc avant de te connaître,
J’avais créé le fichier /etc/msmtprc .
Quand j’ai voulu installer les deux paquets la première fois à ma grande surprise, les paquets y était déjà , pourtant il ne me semble pas les avoir installés dans le temps.:pleading_face:
Hier j’avais tout supprimé Mutt et msmtp car j’étais en rideau , mais je pense que mon serveur SMTP était en rideau à cause des essais . Hier soir tout fonctionnait :pleading_face:, alors je me suis lancé avec le PHP.ini qui pointait sur .msmtprc et un formulaire PHP .
Avant j’utilisais mon copain “ssmtp” qui allait très bien,on ne le retrouve que sur le raspberry et là version rasbian Buster, dommage.
Et encore merci

ssmtp n’est plus maintenu depuis 2013, il est donc voué à disparaître des distributions Linux.

Bruno,
As-tu déjà utilisé motion ?
Et as tu une idée pour récupérer l’image du fichier motion.conf que 2 génération avant de debian fonctionnait bien en envoi de mail ex:

on_movie_end echo vidéo | mutt -s détection mon mail perso

Aujourd’hui je fait :

on_movie_end curl ://monip/mail/mail.php

Qui fonctionne vais qui n’envoie que le mail, je voudrais récupérer la première image ou le film envoyé par mail.
Avant en mettant

on_movie_end echo video | mail -s détection %f monmailperso 

C’était bon .