Aller au contenu

Fonction Mail() Php Ne Fonctionne Pas


Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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é par bagou91
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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é par bagou91
Lien vers le commentaire
Partager sur d’autres sites

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é par Mike913
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.