moonshine972 Posté(e) le 23 octobre 2014 Posté(e) le 23 octobre 2014 Bonjour, j'ai développer un script php qui permet d'envoyer un mail automatiquement, mais voila le problème c'est que je ne reçois aucun mail, je ne trouve pas beaucoup d'info sur internet. j'ai un smtp free non securisé paramètré dans les notifications qui fonctionne correctement. J'utilise la fonction mail() de PHP. j'ai installé mail station ainsi que le serveur de messagerie. Avez-vous une idée du problème? j'ai n'ai pas de retour erreur de php, j'ai juste ma condition if() qui vérifie si mail() est vrai ou faux qui me retourne une erreur. J'ai un synology DS214 SE et DSM 5 je sèche un peu quand meme... Merci 0 Citer
Patrick21 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Bonjour essayes avec ce code, tu crées un fichier mail.php, et ensuite tu l'appelles <?php $destinataire = "tonmail@free.fr"; echo "Ce script envoie un mail à $destinataire"; mail($destinataire, "test email 1", "merci pour le test"); ?> Patrick 0 Citer
bagou91 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 (modifié) pour ma part, j'utilise la librairie PHPMailer fonctionne très bien, et à l'avantage de pouvoir paramétrer le smtp pour l'envoi, faire des mails en html, et y inclure des pièces jointes. la librairie est trouvable ici: https://github.com/Synchro/PHPMailer/archive/master.zip include("PHPMailer/class.phpmailer.php"); include("PHPMailer/class.smtp.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = $host; $mail->Port = $port; //authentification facultative $mail->SMTPAuth = $IsAuth; $mail->Username = $username; $mail->Password = $password; $mail->From = $emailfrom; $mail->FromName = ""; // nom qui sera affiché $mail->Subject = $sujet; // sujet $mail->AltBody = $messagetxt; //Body au format texte $mail->WordWrap = 50; // nombre de caractere pour le retour a la ligne automatique $mail->MsgHTML($messagehtml); //$mail->AddAttachment("./examples/images/phpmailer.gif"); // piéce jointe si besoin $mail->AddAddress($emailto); $mail->IsHTML(true); // envoyer au format html, passer a false si en mode texte if(!$mail->Send()) { echo "Erreur: " . $mail->ErrorInfo; } else { echo "Le message à bien été envoyén"; } Modifié le 24 octobre 2014 par bagou91 0 Citer
moonshine972 Posté(e) le 24 octobre 2014 Auteur Posté(e) le 24 octobre 2014 Bonjour essayes avec ce code, tu crées un fichier mail.php, et ensuite tu l'appelles <?php $destinataire = "tonmail@free.fr"; echo "Ce script envoie un mail à $destinataire"; mail($destinataire, "test email 1", "merci pour le test"); ?> Patrick J'ai testé mais mon code se rapproche de ta version et rien ne fonctionne. pour ma part, j'utilise la librairie PHPMailer fonctionne très bien, et à l'avantage de pouvoir paramétrer le smtp pour l'envoi, faire des mails en html, et y inclure des pièces jointes. la librairie est trouvable ici: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CD4QFjAC&url=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fphpmailer%2F&ei=DABKVLveIsfjavjngPgN&usg=AFQjCNHrrOpQ16oGq2eOlj5PvIgGfO8U_w&sig2=opfA6V4djFKiBEtPYAalMQ&bvm=bv.77880786,d.d2s include("PHPMailer/class.phpmailer.php"); include("PHPMailer/class.smtp.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = $host; $mail->Port = $port; //authentification facultative $mail->SMTPAuth = $IsAuth; $mail->Username = $username $mail->Password = $password $mail->From = $emailfrom; $mail->FromName = ""; // nom qui sera affiché $mail->Subject = $sujet; // sujet $mail->AltBody = $messagetxt; //Body au format texte $mail->WordWrap = 50; // nombre de caractere pour le retour a la ligne automatique $mail->MsgHTML($messagehtml); //$mail->AddAttachment("./examples/images/phpmailer.gif"); // piéce jointe si besoin $mail->AddAddress($emailto); $mail->IsHTML(true); // envoyer au format html, passer a false si en mode texte if(!$mail->Send()) { echo "Erreur: " . $mail->ErrorInfo; } else { echo "Le message à bien été envoyén"; } j'essaye de comprendre ton code, mais je ne trouve pas la class smtp dans le fichier. 0 Citer
bagou91 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 désolé pour le mauvais lien. voici le bon qui contient bien le fichier class.smtp.php https://github.com/Synchro/PHPMailer/archive/master.zip 0 Citer
Mike913 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Bonjour, Si ça ne marche pas avec les 3 lignes de code Patrick21 il y a de fortes chances pour que cela ne marche pas avec le bulldozer de Bagou91. Est-ce que tu as activé les notifications par mail ? Est-ce que quand tu cliques sur envoyer un courriel de test tu le reçois ? 0 Citer
bagou91 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 (modifié) désolé de te contredire Mike913: avec la librairie PHPMailer, ça fonctionne ! j'ai moi aussi galéré pour trouver comment réussir à envoyer des mails: PHP, Shell, ça ne marchait pas dès lors que cela passait par l'envoi smtp fait par le système (serveur mail local). il fallait trouver une librairie ou la fonction d'envoi smtp soit ré-écrite. ce qui est fait dans PHPMailer Modifié le 24 octobre 2014 par bagou91 0 Citer
Mike913 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 (modifié) Chez moi ça fonctionne sans la librairie PHPMailer. et sans aucune librairie spéciale. J' ai juste eu a activer les notifications par mail et je peux envoyer même des pièces jointes. Normalement dans la configuration de la notification par mail tu définit un serveur smtp, et tu n' as pas besoin de redéfinir à chaque fois les paramètres SMTP. Modifié le 24 octobre 2014 par Mike913 0 Citer
loli71 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Forum Anglais : http://forum.synology.com/enu/viewtopic.php?f=20&t=69792 The from email address should be in the same domain as the settings in the DSM Control Panel -> Notifications -> email username il semblerait donc que la fonction mail() de PHP (avec activation des notifications par mail dans DSM) ne marche que si "From" utilisé par la fonction mail() de php utilise le même domaine que celui configuré dans les notifications. En partant de ce constat, cela expliquerait certainement pourquoi le mail() de PHP fonctionne pour certain (s'ils ne change pas le "From") et pas pour d'autres (qui changerait le "From" avec un autre domaine de messagerie). Je pense que si le besoin de changer le "From" est bien là, il faut effectivement utiliser une librairie PHP où la fonction d'envoi soit réécrite comme PHPMailer. 0 Citer
Mike913 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 il semblerait donc que la fonction mail() de PHP (avec activation des notifications par mail dans DSM) ne marche que si "From" utilisé par la fonction mail() de php utilise le même domaine que celui configuré dans les notifications. Je ne pense pas. Car j'ai déjà reçu des mails de différentes provenances. Si quelqu' un veux bien tester mon formulaire de contact: http://meteo.folcke.fr/modules/Contact/ Il recevra une copie du message qu'il m' envoi. 0 Citer
loli71 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Et tu n'as aucun sendmail d'installé ou un mailserver sur ton NAS ? 0 Citer
Mike913 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Et tu n'as aucun sendmail d'installé ou un mailserver sur ton NAS ? J' ai 'Mail Server' et 'Mail Station' qui sont installés. 0 Citer
loli71 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 J' ai 'Mail Server' et 'Mail Station' qui sont installés. Peux tu vérifier dans ton fichier /etc/php/php.ini quelle est la valeur de "sendmail_path = " par curiosité ? juste être certain que tu n'utiliserais pas en php le sendmail du paquage Mailserver. 0 Citer
Mike913 Posté(e) le 24 octobre 2014 Posté(e) le 24 octobre 2014 Voila: [mail function] sendmail_path = /usr/bin/ssmtp -t mail.add_x_header = On 0 Citer
moonshine972 Posté(e) le 24 octobre 2014 Auteur Posté(e) le 24 octobre 2014 bonsoir a tous, J'ai essayé phpmailer qui fonctionne très bien!! enfin! merci pour tout, il y a des fonctions qui ne sont plus supporté dans ma version de php mais il suffit de corriger le problème dans la class. Parcontre je ne sais pas pourquoi la fonction mail() ne fonctionne pas sur mon syno. 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.